
Script de exploração para CVE-2026-5147, realizando injeção SQL cega baseada em booleano e em tempo contra interfaces MySQL para extrair versão, banco de dados, esquema e dados. Inclui calibração, subcomandos de dump e payloads configuráveis.
Para validação de vulnerabilidades autorizada e prática em laboratório: realiza injeção SQL boolean-based blind (EXP / INSTR ou ASCII) e time-based blind (if + ascii + sleep) em interfaces com injeção SQL, com opção de extrair versão, nome do banco, estrutura de tabelas e dados (comportamento semelhante ao --dump do sqlmap).
Não use em sistemas não autorizados.
pip install requests
CURRENT_USER + INSTR ao ponto de injeção, usando o campo de negócio na resposta JSON (padrão code) para distinguir os ramos «verdadeiro / falso».-p instr ou ascii).--skip-calibrate: pula a calibração acima; ainda adivinha usando booleano + campo JSON, sem alternância automática para tempo (adequado para depuração local).O nome do campo JSON e o valor considerado «verdadeiro» podem ser ajustados via --json-code-field, --json-code-true (devem corresponder à API alvo).
# Apenas domínio: concatena o caminho padrão (ver DEFAULT_API_PATH no script)
python cve-2026-5147.py -u target.example.com
# Especifica HTTPS, caminho personalizado e nome do parâmetro de injeção
python cve-2026-5147.py -u target.example.com --https --path /api/foo --param id
# Dump completo do banco (volume enorme de requisições, use com cautela)
python cve-2026-5147.py -u target.example.com dump
# Apenas nomes de tabelas, sem exportar dados
python cve-2026-5147.py -u target.example.com dump --schema-only
Progresso e informações de diagnóstico vão para stderr; o resumo final vai para stdout.
| Parâmetro | Descrição |
|---|---|
-u / --url | Alvo (domínio, host:porta ou URL completa), obrigatório |
--path | Caminho concatenado ao host quando não informado (padrão: caminho de interface de locatário) |
--https | Usa https quando não há scheme (padrão: prefixa http://) |
--param | Nome do parâmetro de injeção (padrão website) |
-p / --payload | Fragmento booleano: instr ou ascii (time-based fixo em if+ascii+sleep) |
--timeout | Timeout HTTP (segundos); ao entrar em time-based, automaticamente não fica abaixo de sleep+5 |
--sleep | Segundos do sleep() no time-based |
--time-floor | Considera verdadeiro: tempo total ≥ este valor (segundos); padrão ≈ sleep - 1 |
--json-code-field / --json-code-true | Campo JSON lido no canal lateral booleano e valor «verdadeiro» |
--skip-calibrate | Pula a calibração por sondas |
--only | version / database / both: apenas versão, apenas nome do banco ou ambos |
-H / -P | Cabeçalhos HTTP adicionais, parâmetros de consulta extras; podem ser repetidos |
No subcomando dump também há --schema-only, --dump-out, --dump-row-limit, --dump-select, etc.; veja python cve-2026-5147.py -h.
| Subcomando | Significado |
|---|---|
info (padrão) | Obtém VERSION(), nome do banco atual DATABASE() (afetado por --only) |
dump | Obtém também nomes de tabelas do banco atual, colunas por tabela e dados das linhas (ou apenas schema, veja --schema-only) |
main(), primeiro calibrate_sqli_oracle; se falhar, effective_detect = "time" e bind_time_payload; no modo time, novamente calibrate_time_oracle.--json-code-field (não mais fixa em code).command foi corrigida: o subcomando padrão é info, não dump.O script destina-se apenas a pesquisa de segurança e testes autorizados. O usuário é responsável por garantir conformidade com as leis locais e o escopo de autorização do ambiente alvo.