Outbound
https://app.hackthebox.com/machines/Outbound
Summary
Uma instância do Roundcube Webmail 1.6.10 exposta na porta 80 foi comprometida através do CVE-2025-49113, uma vulnerabilidade de desserialização insegura que permitiu a execução remota de código. O shell inicial como www-data foi obtido dentro de um container Docker, exigindo um pivô para o sistema host através da reutilização de credenciais.
A cadeia de ataque encadeou múltiplas fases: coleta de credenciais de banco de dados a partir do arquivo de configuração do Roundcube, inspeção da tabela de sessões revelando uma senha criptografada de utilizador, descriptografia manual em 3DES-CBC para recuperar as credenciais em texto claro, acesso SSH para quebrar o container, e finalmente um ataque de symlink explorando o CVE-2025-27591 na ferramenta de monitorização below para alcançar privilégios de root.
MITRE Kill Chain
Pre Engagement
As credenciais fornecidas para esta avaliação encontram-se detalhadas abaixo.
Credentials Received
As credenciais foram fornecidas no início da avaliação, simulando um cenário de teste de penetração com acesso autenticado ao Roundcube Webmail.
Reconnaissance
#attack/T1595 #attack/T1046
Host Discovery
Antes de iniciar qualquer scanning, o alvo foi confirmado como online e o sistema operativo foi identificado através do valor TTL (Time-To-Live) da resposta ICMP. Um valor TTL de 63 sugere um sistema Linux, cujo TTL padrão é 64, indicando que o pacote atravessou um router antes de alcançar o alvo.
O TTL de 63 confirma que o alvo é um sistema baseado em Linux. O valor padrão do TTL para Linux é 64, e o pacote atravessou um router antes de chegar ao destino (64 - 1 = 63).
Port Scanning
Com o alvo confirmado como online, uma varredura SYN rápida foi executada para identificar todas as portas TCP abertas no intervalo de 1 a 65535.
A resposta revelou dois serviços expostos: SSH na porta 22 e HTTP na porta 80. De seguida, uma análise detalhada dos serviços e versões foi conduzida através de um scan com scripts padrão do Nmap.
O scan confirmou que o servidor SSH está a correr OpenSSH 9.6p1 sobre Ubuntu, e que o servidor HTTP (nginx 1.24.0) efetua um redirecionamento para http://mail.outbound.htb/.
Virtual Host Configuration
Com base no redirecionamento identificado, tornou-se necessário configurar o ficheiro /etc/hosts local para resolver os nomes de domínio outbound.htb e mail.outbound.htb para o endereço IP do alvo.
A resolução DNS foi confirmada através de pings para cada hostname.
As respostas confirmaram que o mapeamento DNS está a funcionar corretamente. O próximo passo natural consistiu na enumeração do serviço HTTP para identificar a aplicação web em execução.
Web Enumeration
#attack/T1593 #attack/T1592
Mail Records Investigation
Antes de analisar a aplicação web diretamente, foi conduzida uma enumeração dos registos DNS relacionados com mail para o subdomain mail.outbound.htb. Esta pesquisa pode revelar informações sobre a configuração do servidor de correio electrónico.
Foi realizada uma consulta aos registos MX (Mail Exchange) para identificar servidores de mail responsáveis pelo domínio.
A consulta devolveu um estado NXDOMAIN, indicando que não existe registo MX configurado para este subdomínio. Esta configuração é comum, dado que os registos MX são tipicamente associados ao domínio principal.
De seguida, os registos TXT foram consultados para verificar políticas de segurança de correio electrónico, como SPF, DKIM ou DMARC.
Também este resultado devolveu um estado NXDOMAIN, sugerindo que estes registos não estão configurados para o subdomínio. A atenção foi então direcionada para a análise direta da aplicação web.
Web Application Analysis
A ferramenta whatweb foi utilizada para identificar as tecnologias e o comportamento da aplicação web tanto em outbound.htb como em mail.outbound.htb.
A análise do outbound.htb confirmou o redirecionamento 302 para http://mail.outbound.htb/. A aplicação real está então a ser servida através do subdomínio mail.
A aplicação web está a correr Roundcube Webmail, um cliente de correio electrónico baseado em web. A presença de HttpOnly no cookie de sessão e X-Frame-Options indica algumas proteções básicas de segurança configuradas, mas a versão exacta do software ainda precisa de ser confirmada para identificar vulnerabilidades conhecidas.


A identificação do Roundcube Webmail forneceu uma direção clara para a próxima fase de teste. Esta aplicação é comummente alvo de vulnerabilidades conhecidas, e a enumeração da versão exata é essencial para determinar se existem exploits disponíveis.
Version Discovery
Para identificar a versão exata do Roundcube e detectar vulnerabilidades conhecidas, a ferramenta nuclei foi executada com templates específicos para esta aplicação.
O scan identificou a versão exata 1.6.10 e, mais importante, revelou a vulnerabilidade CVE-2025-49113 com severidade critical. Esta vulnerabilidade está relacionada com desserialização insegura e permite execução remota de código.
CVE-2025-49113 — Roundcube Webmail versions prior to the patched release are vulnerable to unauthenticated remote code execution through insecure deserialization.
O advisory oficial encontra-se disponível em:
A existência de um exploit público para esta vulnerabilidade foi confirmada através de pesquisa no GitHub — o repositório hakaioffsec/CVE-2025-49113-exploit fornece uma implementação funcional do ataque.
Initial Access
#attack/T1190 #attack/T1210
Exploit Acquisition
Com a vulnerabilidade CVE-2025-49113 confirmada, o exploit foi obtido directamente a partir do repositório público do GitHub.
Proof of Concept — RCE Verification
Antes de estabelecer um reverse shell, foi conduzido um teste de conceito para confirmar que a vulnerabilidade permite execução remota de código. Um HTTP server foi iniciado na máquina atacante e um pedido curl foi invectado através do exploit para verificar a comunicação.
O exploit foi executado com a payload curl direcionada ao servidor local.
O servidor HTTP local recebeu o pedido GET do alvo, confirmando que a execução remota de código está funcional.
Finding: CVE-2025-49113 — Roundcube Webmail Insecure Deserialization RCE
Affected Asset:
http://mail.outbound.htb/— Roundcube Webmail 1.6.10Severity: Critical
Vulnerability Type: Insecure Deserialization / Remote Code Execution
CVE: CVE-2025-49113
Reproduction Steps:
Identificar a versão do Roundcube através do endpoint de versão ou ferramentas automatizadas (nuclei).
Obter o exploit público CVE-2025-49113 a partir do repositório hakaioffsec/CVE-2025-49113-exploit.
Executar o exploit com credenciais válidas do Roundcube, injetando uma payload de comando através do gadget de desserialização insegura.
Remediation: Atualizar o Roundcube Webmail para a versão 1.6.11 ou superior, onde a vulnerabilidade de desserialização insegura foi corrigida. Alternativamente, aplicar o patch de segurança oficial disponível em: https://github.com/advisories/GHSA-8j8w-wwqc-x596
Reverse Shell Establishment
Com a RCE confirmada, um reverse shell foi estabelecido. Um listener netcat foi configurado na porta 4444 da máquina atacante.
O exploit foi executado com uma payload de reverse shell.
O listener netcat recebeu a conexão e o shell foi estabelecido com sucesso. O utilizador activo é www-data.
O output inicial do shell após a conexão revela informações importantes sobre o ambiente.
O endereço IP interno 172.17.0.2 confirma que o acesso foi obtido dentro de um container Docker.
Shell Stabilization
O shell recebido carece de um TTY adequado, o que limita a interactividade. Para obter um shell completamente interactivo com controlo de jobs e suporte a atalhos de teclado, foram executados os seguintes passos.
Primeiro, um pseudo-TTY foi criado com script.
De seguida, o shell foi restaurado com as definições correctas de terminal.
As dimensões do terminal foram configuradas.
O shell está agora completamente interactivo com suporte a seta para cima/baixo, Ctrl+C, Ctrl+Z e todas as funcionalidades de um terminal padrão.
Container Identification
Após a estabilização do shell, uma enumeração inicial do ambiente revelou indicadores claros de que o acesso foi obtido dentro de um container Docker.
A presença do ficheiro .dockerenv na raiz é um indicador determinante de execução dentro de um container Docker.
O ficheiro .dockerenv, quando presente no directório raiz /, confirma que o processo está a correr dentro de um container Docker. Este ficheiro é criado automaticamente pelo daemon do Docker para facilitar a deteção do ambiente.
O acesso aos directórios pessoais dos utilizadores foi igualmente verificado.
As restrições de acesso confirmam que o shell actual opera com privilégios limitados de www-data. O próximo passo consistiu na enumeração dos ficheiros de configuração da aplicação Roundcube para identificar vectores de escalação.
Credential Access
#attack/T1552_001 #attack/T1552_004
Roundcube Configuration Inspection
A enumeração dos ficheiros da aplicação Roundcube revelou o arquivo de configuração principal, que contém credenciais da base de dados.
A credencial da base de dados MySQL foi descoberta. De salientar que a chave de encriptação des_key também está exposta neste ficheiro, o que pode permitir a descriptografia de dados sensíveis armazenados na base de dados.
MySQL Enumeration
Com as credenciais da base de dados, foi possível conectar ao MySQL local e enumerar o conteúdo da base de dados Roundcube.
Uma vez conectado, as tabelas disponíveis foram listadas.
A tabela session é de particular interesse, pois pode conter sessões activas e dados codificados de utilizadores autenticados.
A coluna vars contém uma string Base64 extensa. Após a sua descodificação, foi identificado o campo password correspondente ao utilizador jacob, ainda que encriptado.
Cryptographic Decryption
O Roundcube não armazena passwords em texto claro. A password do utilizador jacob está encriptada usando o algoritmo 3DES-CBC, utilizando a chave des_key encontrada anteriormente no ficheiro de configuração. A descodificação requer a separação do IV (8 bytes iniciais) e do texto cifrado.
Foi criado um script PHP para realizar a descriptografia manualmente.
User Migration to jacob
Com a password do jacob recuperada, foi possível mover-se lateralmente para este utilizador através do comando su.
O acesso ao utilizador jacob foi obtido com sucesso, mantendo-se ainda dentro do container Docker (endereço IP 172.17.0.2). O próximo passo consistiu em quebrar o isolamento do container e aceder ao sistema host através de SSH.
Lateral Movement
#attack/T1021_004
Container Breakout via SSH
Para sair do container e aceder ao sistema host foi identificada através do acesso SSH. Com as credenciais do jacob, foi possível autenticar-se directamente no host, quebrando o isolamento imposto pelo container Docker.
O SSH para outbound.htb estabeleceu uma nova sessão diretamente no host, com o UID 1002 e acesso ao IP 10.10.11.77. O container Docker foi contornado com sucesso.
Host Enumeration
Com acesso ao sistema host, a enumeração inicial revelou um email guardado no diretório pessoal do jacob, que continha novas credenciais.
O email de Tyler confirma que a password do jacob foi alterada para gY4Wr3a1evp4 — uma password diferente da que foi descriptografada da base de dados.
O email guardado no sistema host revela que o jacob possui uma password actualizada (gY4Wr3a1evp4), diferente da password descriptografada (595mO8DmwGeD). Esta diferença sugere que a sessão encriptada na base de dados pode não ser a sessão activa mais recente.
Antes de prosseguir para a escalação de privilégios, a flag do utilizador foi capturada.
User flag capturada: 350d523bc0c7be3c8ec5a57d604cfb0a
Privilege Escalation
#attack/T1068 #attack/T1548_003 #owasp/A05_2021
Sudo Permissions Enumeration
Com acesso ao utilizador jacob no sistema host, foi verificada a possibilidade de execução de comandos com privilégios elevados através do sudo.
O output revela que o jacob pode executar o binário below com privilégios de root, sem necessidade de password, com algumas restrições em parâmetros específicos. Esta configuração é um vector clássico de escalação de privilégios.
below Binary Analysis
O binário below foi identificado e analisado.
O binário é um executável ELF 64-bit. A ajuda foi consultada para compreender as suas funcionalidades.
below Log Directory Analysis
A execução do subcomando record foi testada, revelando um caminho de ficheiros de log no directório /var/log/below.
Os ficheiros de log foram examinados.
O directório /var/log/below possui permissões drwxrwxrwx — ou seja, é world-writable. Esta configuração permite a qualquer utilizador criar ou modificar ficheiros dentro deste directório, incluindo a possibilidade de criar symlinks.
Vulnerability Research
A pesquisa sobre esta configuração levou à identificação do CVE-2025-27591, uma vulnerabilidade de escalação de privilégios no below.
CVE-2025-27591 — A privilege escalation vulnerability existed in the Below service prior to v0.9.0 due to the creation of a world-writable directory at /var/log/below. This could have allowed local unprivileged users to escalate to root privileges through symlink attacks that manipulate files such as /etc/shadow.
Exploitation
A exploração desta vulnerabilidade foi conduzida através de um ataque de symlink que substitui o ficheiro error_root.log por um symlink para /etc/passwd. Quando o below record é executado com privilégios de root, o processo modifica as permissões do ficheiro de log, tornando o /etc/passwd world-writable e permitindo a adição de um novo utilizador com UID 0.
Finding: CVE-2025-27591 — below World-Writable Log Directory + Sudo NOPASSWD Symlink Attack
Affected Asset:
outbound.htb—belowv0.9.0 (ou anterior)Severity: High
Vulnerability Type: Symlink Attack / Sudo NOPASSWD / World-Writable Directory / Privilege Escalation
CVE: CVE-2025-27591
Reproduction Steps:
Identificar o binário below com permissões sudo NOPASSWD para o utilizador actual.
Verificar que o directório /var/log/below é world-writable (drwxrwxrwx).
Remover o ficheiro error_root.log e criar um symlink para /etc/passwd.
Executar sudo /usr/bin/below record — o processo com privilégios de root segue o symlink e modifica as permissões do ficheiro /etc/passwd para 0666 (world-writable).
Acrescentar um novo utilizador root ao /etc/passwd (sem password) e autenticar-se com su.
Remediation: Atualizar o below para a versão 0.9.0 ou superior, onde a vulnerabilidade foi corrigida. Alternativamente, alterar as permissões do directório /var/log/below para 755 e assegurar que apenas o utilizador root pode escrever no directório.
Exploit Execution
O exploit foi executado em modo one-liner para combinar todas as etapas.
O exploit foi executado com sucesso. Um novo utilizador bruno foi criado com UID 0 (root) e sem password.
A autenticação como bruno confirmou o acesso root.
Root flag capturada: a79d4821e7f83f3a2ebd6f3c4b8e1d9a
Escalação de privilégios bem-sucedida. Comprometimento total do sistema alcançado.

Atualizado