githubEditar
hacktheboxlinuxwebmailroundcubeinsecure deserializationcontainer breakoutsudo abuse

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

1

Reconnaissance

A varredura ativa revelou a porta 22 (OpenSSH 9.6p1) e a porta 80 (nginx 1.24.0) com um redirecionamento para uma instância do Roundcube Webmail.

2

Initial Access

O CVE-2025-49113 foi explorado contra o Roundcube 1.6.10, alcançando execução remota de código não autenticada através de desserialização insegura e entregando um reverse shell como www-data.

3

Container Escape

A reutilização de credenciais via SSH com a password do jacob permitiu quebrar o container Docker e aceder ao sistema host.

4

Privilege Escalation

O CVE-2025-27591 na ferramenta de monitorização below foi explorado — um diretório de logs com permissões world-writable permitiu um ataque de symlink que modificou o /etc/passwd, concedendo acesso root.

Pre Engagement

As credenciais fornecidas para esta avaliação encontram-se detalhadas abaixo.

Credentials Received

circle-exclamation

Credenciais fornecidas pelo cliente

circle-info

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.

circle-info

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.

circle-info

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.

circle-info

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.

triangle-exclamation

Finding: CVE-2025-49113 — Roundcube Webmail Insecure Deserialization RCE

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.

circle-check

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.

circle-info

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.

circle-info

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.

circle-exclamation

Credencial descoberta

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.

circle-exclamation

Credencial descoberta

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.

circle-exclamation

Credencial descoberta

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.

circle-check

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.

circle-info

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.

circle-check

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.

circle-info

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.

triangle-exclamation

Exploit Execution

O exploit foi executado em modo one-liner para combinar todas as etapas.

circle-check

A autenticação como bruno confirmou o acesso root.

circle-check
circle-check

Atualizado