
ZoneMinder Inyección SQL Basada en Tiempo (CVE-2024-51482) Exploit POC
Este repositorio contiene un exploit de prueba de concepto (PoC) de alto rendimiento y paralelizado (Exploit.py) para una vulnerabilidad de Inyección SQL Ciega encontrada en las versiones de ZoneMinder 1.37.* hasta 1.37.64.
Según GHSA-qm8h-3xvf-m7j3, la vulnerabilidad se origina en web/ajax/event.php al manejar la acción removetag. El parámetro tid (TagId) se lee de la solicitud y se concatena de forma insegura directamente en una sentencia SQL:
$tagId = $_REQUEST['tid'];
// ...
$sql = "SELECT * FROM Events_Tags WHERE TagId = $tagId";
$rowCount = dbNumRows($sql);
Debido a que $tagId no está parametrizado antes de pasarse a dbNumRows(), un atacante autenticado puede inyectar comandos SQL arbitrarios mediante técnicas de inyección SQL basada en booleanos o en tiempo (el PoC aquí presentado utiliza SLEEP()).
Esto permite el control total de las bases de datos SQL, lo que conlleva una pérdida de confidencialidad e integridad de los datos, y potencialmente una Denegación de Servicio (DoS) mediante comandos de suspensión persistentes.
A partir de la versión 1.37.65, las consultas SQL se han parametrizado correctamente. El bloque vulnerable fue parcheado para construir una consulta segura:
$sql = "SELECT * FROM Events_Tags WHERE TagId = ?";
$rowCount = dbNumRows($sql, $tagId);
El script v2.0 FAST EXPLOIT acelera significativamente la extracción de datos hasta 5 veces mediante el uso de múltiples hilos, una búsqueda optimizada de frecuencia de caracteres y una calibración dinámica de umbral para extraer agresivamente las credenciales de usuario (Nombre de usuario:Contraseña) de la tabla de base de datos zm.Users.
Exploit.py v2.0 FAST EXPLOIT)zm.Users.http://<target>/zm/index.phpview=request&request=event&action=removetagtidpython3 Exploit.py
Al ejecutarse, el script se ejecuta en modo interactivo y solicita lo siguiente:
index.php de ZoneMinder (por ejemplo, http://zoneminder.local/zm/index.php).ZMSESSID válida que represente una sesión activa.zm.Users.Se crea automáticamente un archivo llamado extracted_data.txt con las credenciales volcadas (en formato Nombre de usuario:Contraseña). El script también muestra estadísticas de ejecución en tiempo real, incluyendo el tiempo total transcurrido y el número total de solicitudes HTTP enviadas.
Aviso legal: Este script de exploit está destinado estrictamente a fines educativos y pruebas de penetración autorizadas. No utilice esta herramienta contra sistemas que no posea o para los que no tenga permiso explícito para probar.