
A ferramenta de ataque de API one shot - encontra a URL da API a partir da raiz fornecida e simula os ataques automatizados
Um scanner de segurança de API black-box de pipeline completo escrito em Python. Ele enumera endpoints, identifica parâmetros, sonda métodos HTTP, testa lógica de autenticação/autorização e executa simulações de ataque padrão do OWASP API Top 10 (BOLA, Broken Auth, BFLA, Mass Assignment, Rate Limiting, SSRF, Security Misconfiguration, etc.), além de um fuzzer de confiabilidade no estilo RESTler que caça crashes/500s independentemente de qualquer categoria OWASP.
Todos os scripts principais são projetados para serem stdlib-only (somente biblioteca padrão). Se ferramentas ou bibliotecas externas não estiverem presentes no sistema, o apiharvester recorre automaticamente a implementações em Python puro para garantir execução imediata.
apiharvester/ — O diretório principal do pacote Python. Execute como python3 -m apiharvester.scripts/check_requirements.sh — Verifica os pré-requisitos de binários + payloads.scripts/install_requirements.sh — Baixa os arquivos de payload necessários do SecLists e opcionalmente instala binários (via go install e pip).apiharvester.py — Uma distribuição autônoma de arquivo único do scanner.api_deep_discovery.py — Crawler dinâmico usando código do navegador headless Katana para descoberta dinâmica de endpoints SPA/XHR.api_intelligence_engine.py — Agregador de pipeline e classificador passivo de vulnerabilidades.apisec.py — Versão alternativa de scanner de segurança de arquivo único.requirements.txt — Lista de dependências Python (principalmente para aceleradores opcionais baseados em Python).payloads/ — Arquivos de wordlist e payload para reconhecimento:
params.txt — 25.889 candidatos a nomes de parâmetros para teste de endpoints de APIdirectories.txt — 62.281 padrões comuns de caminhos de API e nomes de diretóriossubdomains.txt — 5.000 variantes de subdomínios para descoberta de APIkiterunner/ — Arquivos de esquema de rotas do Kiterunner para enumeração acelerada de endpointsVerificar Requisitos: Execute o script somente leitura para verificar se as ferramentas/payloads principais estão disponíveis:
./scripts/check_requirements.sh
Instalar Ferramentas Opcionais e Arquivos de Payload: Execute o script de instalação para buscar automaticamente as principais wordlists do SecLists, esquemas de rotas do Kiterunner e instalar aceleradores de ferramentas:
./scripts/install_requirements.sh
Instalar Pacotes Python:
pip3 install -r requirements.txt
Execute o scanner diretamente contra um domínio alvo:
python3 -m apiharvester example.com \
--auth "Bearer eyJ..." \
--auth2 "Bearer eyJ_lowpriv..." \
--threads 20 \
--html report.html \
--json findings.jsonl
target (posicional): Domínio FQDN a ser escaneado.--auth: Token de acesso de alto privilégio para verificações autenticadas (ex.: sessão de usuário válida).--auth2: Token de acesso de baixo privilégio para testes de BOLA / BFLA / escalonamento de privilégios entre contas.--threads: Tamanho do pool de threads (padrão: 20).--timeout: Tempo limite de requisição HTTP em segundos (padrão: 10).--burst: Contagem de requisições rápidas para verificação de rate-limiting (padrão: 20).--json: Salva relatório em formato JSONL (descobertas JSON delimitadas por linha).--html: Salva relatório de dashboard HTML interativo.--output-dir: Substitui o caminho padrão do diretório de saída (ex.: ./scans/example.com).--skip-recon: Pula as fases de recon, usa arquivos de saída existentes de uma execução anterior.--recon-dir: Carrega diretório de saída de recon pré-existente e executa apenas as fases de ataque.--attacks-only: Executa apenas as fases de ataque (implica --skip-recon).--attacks: Lista de ataques separada por vírgulas a executar. Padrão: todos. Disponíveis:
bola,broken_auth,mass_assignment,rate_limit,bfla,business_logic,
ssrf,misconfiguration,inventory,sspp,injection,reliability,secrets
OWASP API Top 10 (API1–API10:2023):
bola) — Broken Object-Level Authorization. Testa endpoints de ID de objeto com fuzzing de ID (0, 1, 2, 99, "admin", "test", variantes de UUID, etc.) e tokens de autenticação diferenciais.broken_auth) — Descoberta de endpoints não autenticados, quebra de segredo fraco de JWT, bypass alg=none, adulteração de claims, injeção de kid, além de bypasses de método OPTIONS/HEAD.mass_assignment) — Injeção de campos de escalonamento de privilégios em corpos PUT/PATCH (role, is_admin, verified, balance, etc.).rate_limit) — Envia 20+ requisições rápidas; sinaliza endpoints que retornam 200 em vez de 429 Retry-After.bfla) — Broken Function-Level Authorization. Testa caminhos sensíveis (/admin, /roles, /impersonate, etc.) com e sem token de baixo privilégio.business_logic) — Violações de workflow/máquina de estados (ex.: atualizar um pedido após o pagamento).ssrf) — Testa server-side request forgery via parâmetros de URL e corpos de requisição.misconfiguration) — CORS (ativo: envia Origin não confiável), cabeçalhos de segurança ausentes, erros verbosos, vazamentos de banner do servidor.inventory) — Endpoints não documentados, endpoints abandonados, interfaces administrativas expostas.sspp) — Unsafe Server-Side Post Processing (injeção de template, injeção de XPath, etc.).Ataques Bônus:
injection) — Injeção de SQL, XSS, injeção de comando (baseada em erro + blind baseada em tempo).reliability) — Fuzzing no estilo RESTler: teste de limites/entrada malformada para encontrar crashes 5xx e bugs de confiabilidade do servidor (independente das categorias OWASP).secrets) — Correspondência de padrões para credenciais vazadas em corpos de resposta: AWS Access Keys, Google API Keys, Slack Tokens, Stripe Keys, GitHub Tokens, Private Key Blocks, JWTs e atribuições genéricas de segredos (api_key=..., password=..., etc.).Scan completo com token autenticado + de baixo privilégio (melhor para BOLA/BFLA):
python3 -m apiharvester api.example.com \
--auth "Bearer high_priv_token_here" \
--auth2 "Bearer low_priv_token_here" \
--html report.html \
--json findings.jsonl
Recon rápido apenas (descobrir endpoints, sem ataques):
python3 -m apiharvester example.com --skip-recon --attacks ""
(Ou simplesmente não forneça --auth para pular algumas fases de ataque.)
Reexecutar apenas ataques contra dados de recon salvos (iteração rápida):
python3 -m apiharvester example.com --recon-dir output/example.com_20260715_140233 --attacks-only
Executar apenas ataques específicos (ex.: BOLA + Secrets):
python3 -m apiharvester example.com --attacks bola,secrets
Ignorar erros de certificado TLS (proxy corporativo, ambiente de staging):
# apiharvester usa um contexto TLS permissivo por padrão — nenhuma flag extra necessária
# Todos os endpoints HTTPS funcionam mesmo com certificados autoassinados/interceptados
python3 -m apiharvester https://staging-api.example.com