
ZoneMinder Injeção SQL Baseada em Tempo (CVE-2024-51482) Exploit POC
Este repositório contém um exploit de prova de conceito (PoC) de alta performance e paralelizado (Exploit.py) para uma vulnerabilidade de Injeção SQL Cega encontrada nas versões 1.37.* até 1.37.64 do ZoneMinder.
De acordo com GHSA-qm8h-3xvf-m7j3, a vulnerabilidade tem origem em web/ajax/event.php ao processar a ação removetag. O parâmetro tid (TagId) é lido da requisição e concatenado de forma insegura diretamente em uma instrução SQL:
$tagId = $_REQUEST['tid'];
// ...
$sql = "SELECT * FROM Events_Tags WHERE TagId = $tagId";
$rowCount = dbNumRows($sql);
Como $tagId não é parametrizado antes de ser passado para dbNumRows(), um atacante autenticado pode injetar comandos SQL arbitrários usando técnicas de injeção SQL baseada em booleano ou baseada em tempo (o PoC apresentado aqui utiliza SLEEP()).
Isso permite o controle total dos bancos de dados SQL, resultando em perda de confidencialidade e integridade dos dados e, potencialmente, em Negação de Serviço (DoS) por meio de comandos de sleep persistentes.
A partir da versão 1.37.65, as consultas SQL foram devidamente parametrizadas. O bloco vulnerável foi corrigido para construir uma consulta segura:
$sql = "SELECT * FROM Events_Tags WHERE TagId = ?";
$rowCount = dbNumRows($sql, $tagId);
O script FAST EXPLOIT v2.0 acelera significativamente a extração de dados em até 5x usando multithreading, uma busca otimizada por frequência de caracteres e calibração dinâmica de limiar para extrair agressivamente credenciais de usuário (Username:Password) da tabela zm.Users do banco de dados.
Exploit.py v2.0 FAST EXPLOIT)zm.Users.http://<target>/zm/index.phpview=request&request=event&action=removetagtidpython3 Exploit.py
Ao ser executado, o script opera em modo interativo e solicita o seguinte:
index.php do ZoneMinder (ex.: http://zoneminder.local/zm/index.php).ZMSESSID válido representando uma sessão ativa.zm.Users.Um arquivo chamado extracted_data.txt é criado automaticamente com as credenciais extraídas (no formato Username:Password). O script também exibe estatísticas de execução em tempo real, incluindo o tempo total decorrido e o número total de requisições HTTP enviadas.
Aviso Legal: Este script de exploit destina-se estritamente a fins educacionais e a testes de penetração autorizados. Não utilize esta ferramenta contra sistemas que você não possua ou para os quais não tenha permissão explícita para testar.