Pentesting de API Web
Reading time: 7 minutes
tip
Aprenda e pratique Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: 
HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure: 
HackTricks Training Azure Red Team Expert (AzRTE)
Supporte o HackTricks
- Confira os planos de assinatura!
 - Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
 - Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
 
Resumo da Metodologia de Pentesting de APIs
Pentesting de APIs envolve uma abordagem estruturada para descobrir vulnerabilidades. Este guia encapsula uma metodologia abrangente, enfatizando técnicas e ferramentas práticas.
Entendendo os Tipos de API
- SOAP/XML Web Services: Use o formato WSDL para documentação, tipicamente encontrado em caminhos 
?wsdl. Ferramentas como SOAPUI e WSDLer (Burp Suite Extension) são úteis para analisar e gerar requisições. Documentação de exemplo está acessível em DNE Online. - REST APIs (JSON): A documentação frequentemente vem em arquivos WADL, mas ferramentas como Swagger UI fornecem uma interface mais amigável para interação. Postman é uma ferramenta valiosa para criar e gerenciar requisições de exemplo.
 - GraphQL: Uma query language para APIs que oferece uma descrição completa e compreensível dos dados na sua API.
 
Practice Labs
- VAmPI: Uma API deliberadamente vulnerável para prática hands-on, cobrindo as vulnerabilidades OWASP top 10 para APIs.
 
Effective Tricks for API Pentesting
- SOAP/XML Vulnerabilities: Explore vulnerabilidades XXE, embora declarações DTD frequentemente sejam restritas. Tags CDATA podem permitir a inserção de payloads se o XML permanecer válido.
 - Privilege Escalation: Teste endpoints com níveis de privilégio variados para identificar possibilidades de acesso não autorizado.
 - CORS Misconfigurations: Investigue as configurações de CORS para possível explorabilidade via ataques CSRF a partir de sessões autenticadas.
 - Endpoint Discovery: Aproveite padrões de API para descobrir endpoints ocultos. Ferramentas como fuzzers podem automatizar esse processo.
 - Parameter Tampering: Experimente adicionar ou substituir parâmetros em requisições para acessar dados ou funcionalidades não autorizadas.
 - HTTP Method Testing: Varie os métodos de requisição (GET, POST, PUT, DELETE, PATCH) para descobrir comportamentos inesperados ou divulgações de informação.
 - Content-Type Manipulation: Mude entre diferentes content types (x-www-form-urlencoded, application/xml, application/json) para testar problemas de parsing ou vulnerabilidades.
 - Advanced Parameter Techniques: Teste com tipos de dados inesperados em payloads JSON ou brinque com dados XML para injeções XXE. Também tente parameter pollution e caracteres curinga para testes mais amplos.
 - Version Testing: Versões mais antigas da API podem ser mais suscetíveis a ataques. Sempre verifique e teste múltiplas versões da API.
 
Autorização & Lógica de Negócio (AuthN != AuthZ) — armadilhas do tRPC/Zod protectedProcedure
Stacks TypeScript modernos frequentemente usam tRPC com Zod para validação de entrada. No tRPC, protectedProcedure tipicamente garante que a requisição possui uma sessão válida (authentication) mas não implica que o caller tem o papel/permissões corretas (authorization). Essa discrepância leva a Broken Function Level Authorization/BOLA se procedimentos sensíveis forem protegidos apenas por protectedProcedure.
- Threat model: Qualquer usuário autenticado com baixo privilégio pode chamar procedimentos de nível admin se verificações de role/permissão estiverem ausentes (ex.: migrações background, feature flags, manutenção em tenant-wide, controle de jobs).
 - Black-box signal: Endpoints 
POST /api/trpc/<router>.<procedure>que têm sucesso para contas básicas quando deveriam ser exclusivos de admins. Signups self-serve aumentam drasticamente a explorabilidade. - Typical tRPC route shape (v10+): JSON body wrapped under 
{"input": {...}}. 
Example vulnerable pattern (no role/permission gate):
// The endpoint for retrying a migration job
// This checks for a valid session (authentication)
retry: protectedProcedure
// but not for an admin role (authorization).
.input(z.object({ name: z.string() }))
.mutation(async ({ input, ctx }) => {
// Logic to restart a sensitive migration
}),
Exploração prática (black-box)
- Registre uma conta normal e obtenha uma sessão autenticada (cookies/headers).
 - Enumere tarefas em segundo plano ou outros recursos sensíveis via procedimentos “list”/“all”/“status”.
 
curl -s -X POST 'https://<tenant>/api/trpc/backgroundMigrations.all' \
-H 'Content-Type: application/json' \
-b '<AUTH_COOKIES>' \
--data '{"input":{}}'
- Invocar ações privilegiadas, como reiniciar um job:
 
curl -s -X POST 'https://<tenant>/api/trpc/backgroundMigrations.retry' \
-H 'Content-Type: application/json' \
-b '<AUTH_COOKIES>' \
--data '{"input":{"name":"<migration_name>"}}'
Impacto a avaliar
- Corrupção de dados via reinícios não-idempotentes: Forçar execuções concorrentes de migrações/workers pode criar condições de corrida e estados parciais inconsistentes (perda silenciosa de dados, análises corrompidas).
 - DoS via worker/DB starvation: Acionar repetidamente jobs pesados pode esgotar pools de workers e conexões do banco de dados, causando outages que afetam todo o tenant.
 
Ferramentas e Recursos para API Pentesting
- kiterunner: Excelente para descobrir endpoints de API. Use-o para escanear e brute force paths e parâmetros contra APIs alvo.
 
kr scan https://domain.com/api/ -w routes-large.kite -x 20
kr scan https://domain.com/api/ -A=apiroutes-220828 -x 20
kr brute https://domain.com/api/ -A=raft-large-words -x 20 -d=0
kr brute https://domain.com/api/ -w /tmp/lang-english.txt -x 20 -d=0
- https://github.com/BishopFox/sj: sj é uma ferramenta de linha de comando projetada para auxiliar na auditoria de exposed Swagger/OpenAPI definition files verificando os endpoints de API associados quanto à autenticação fraca. Também fornece modelos de comando para testes manuais de vulnerabilidades.
 - Ferramentas adicionais como automatic-api-attack-tool, Astra, e restler-fuzzer oferecem funcionalidades específicas para testes de segurança de API, que vão desde simulação de ataques até fuzzing e escaneamento de vulnerabilidades.
 - Cherrybomb: É uma ferramenta de segurança de API que audita sua API com base em um arquivo OAS (a ferramenta é escrita em rust).
 
Recursos para Aprendizado e Prática
- OWASP API Security Top 10: Leitura essencial para entender as vulnerabilidades comuns em APIs (OWASP Top 10).
 - API Security Checklist: Uma lista de verificação abrangente para proteger APIs (GitHub link).
 - Logger++ Filters: Para caçar vulnerabilidades em API, o Logger++ oferece filtros úteis (GitHub link).
 - API Endpoints List: Uma lista selecionada de endpoints de API potenciais para fins de teste (GitHub gist).
 
Referências
- https://github.com/Cyber-Guy1/API-SecurityEmpire
 - How An Authorization Flaw Reveals A Common Security Blind Spot: CVE-2025-59305 Case Study
 
tip
Aprenda e pratique Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: 
HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure: 
HackTricks Training Azure Red Team Expert (AzRTE)
Supporte o HackTricks
- Confira os planos de assinatura!
 - Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
 - Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
 
HackTricks