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ů
- Grandpa je především o správné interpretaci technologie. IIS 6.0 s WebDAV na starém Windows hostu je prakticky pozvánka ke známému veřejnému exploitu.
- První webový shell nestačil. I na zranitelném serveru je potřeba oddělit foothold od finální eskalace.
- Lokální exploit suggester měl tady vysokou hodnotu právě proto, že systém byl historický a nepatchovaný. Někdy je to nejkratší a nejčistší další krok.
Co si odnést do praxe
- WebDAV na starých verzích IIS patří mezi technologie, které se nevyplatí držet při životě bez velmi silného důvodu. Grandpa ukazuje, jak rychle se z něj stane přímé RCE.
- Patch management není administrativní kosmetika. Na tomhle stroji rozhoduje právě to, že zranitelné jsou jak veřejná webová vrstva, tak lokální kernel.
- Po webovém footholdu má smysl rychle rozhodnout, zda je cesta přes lokální exploit racionálnější než hluboká ruční enumerace. U starých Windows strojů bývá odpověď často ano.