tom@home.htb:~$

Blog o HTB

1 December 2020

Grandpa

Úvod a kontext

Grandpa je starší Windows stroj, ale právě proto je didakticky užitečný. Celý řetězec stojí na dvou historických problémech: zranitelném IIS 6.0 s WebDAV a následné lokální eskalaci přes nepodchycený kernelový bug. Není to box o kreativní enumeraci, ale o tom, jak vypadá důsledek dlouhodobě nepatchovaného systému.

Výukově jsou důležité dvě věci. Za prvé, že už samotný nmap a povolené WebDAV metody prakticky ukazují na veřejně známý exploit. A za druhé, že ani po úspěšném webovém footholdu není hotovo: první shell běží s omezenými právy a až lokální exploit z něj udělá SYSTEM.

Počáteční průzkum

IIS 6.0 a WebDAV

U Grandpa stačí první scan k poměrně přesné hypotéze. IIS 6.0, WebDAV a široká sada povolených metod jsou přesně ta kombinace, která dlouhodobě souvisí s exploitem ScStoragePathFromUrl.

ports=$(nmap -p- --min-rate=1000 -T4 -Pn $IP | grep ^[0-9] | cut -d "/" -f 1 | tr "\n" "," | sed s/,$//);echo $ports;nmap -p $ports -A -sC -sV -v -Pn $IP
PORT   STATE SERVICE VERSION
80/tcp open  http    Microsoft IIS httpd 6.0
| http-methods:
|   Supported Methods: OPTIONS TRACE GET HEAD COPY PROPFIND SEARCH LOCK UNLOCK DELETE PUT POST MOVE MKCOL PROPPATCH
| http-webdav-scan:
|   Server Type: Microsoft-IIS/6.0
|   Allowed Methods: OPTIONS, TRACE, GET, HEAD, COPY, PROPFIND, SEARCH, LOCK, UNLOCK

Potvrzení známé zranitelnosti

Tady není potřeba vymýšlet exotickou cestu. Druhý nmap se vuln a enum skripty jen potvrzuje to, co už naznačoval první scan: starý IIS/WebDAV je nejlepší vstupní bod.

nmap -p $ports -n -v -A -sC -sV -Pn --script *enum*,*vuln* $IP

Analýza zjištění

Proč padla volba na iis_webdav_scstoragepathfromurl

V případě Grandpa je rozumné nesnažit se exploit „vynalézat znovu“, ale využít dobře popsaný modul iis_webdav_scstoragepathfromurl. Ten zneužívá chybu ve WebDAV implementaci IIS 6.0 a vede přímo k první meterpreter session.

msf5 exploit(windows/iis/iis_webdav_scstoragepathfromurl)

Získání přístupu

První meterpreter session

Po úspěšném webovém exploitu vznikne shell, ale ještě ne s nejvyššími právy. To je důležité nepřehlédnout: webový foothold není totéž jako plné převzetí systému, obzvlášť na starších Windows hostech.

msf5 exploit(windows/iis/iis_webdav_scstoragepathfromurl)
more user.txt
bdff5ec67c3cff017f2bedc146a5d869

Eskalace oprávnění

local_exploit_suggester a ms14_070_tcpip_ioctl

Po footholdu dává smysl hned pustit local_exploit_suggester, protože na takto starém systému bývají lokální exploity spolehlivější než složitá ruční enumerace. Tady vyjde ms14_070_tcpip_ioctl. Před spuštěním je rozumné migrovat session do stabilnějšího procesu davcdata.exe, aby se exploit nespustil v krátkodechém webovém kontextu.

msf5 post(multi/recon/local_exploit_suggester)
=> windows/local/ms14_070_tcpip_ioctl

session -i 1
ps
migrate 3812
background

msf5 exploit(windows/local/ms14_070_tcpip_ioctl)
run

more root.txt
9359e905a2c35f861f6a57cecf28bb7b

Shrnutí klíčových poznatků

Co si odnést do praxe

tags: windows - exploit - enumeration - privesc - hackthebox