pular para o conteúdo
voltar ao mapa
técnica
etapa: discover
3 min de leitura

Testes de segurança de web e API

A maioria dos achados web graves vem de uma lista curta de perguntas: quem pode ver o quê, quem pode alterar o quê e o que acontece com uma entrada diferente da que o desenvolvedor esperava. Um proxy e duas contas respondem à maioria delas.

Burp SuiteOWASP ZAPffuf (authorized content discovery)PostmancurlNuclei (authorized targets)

Preparação

  • Passe o navegador por um proxy de interceptação (Burp, ZAP) para ver, reenviar e modificar cada requisição.
  • Crie pelo menos duas contas de teste no mesmo nível de privilégio e uma em um nível superior, se o escopo permitir. Bugs de autorização são encontrados comparando contas.
  • Mapeie a aplicação: páginas, rotas da API, parâmetros, papéis, uploads de arquivos, integrações. O esquema da API (OpenAPI) é um presente quando existe.
  • Anote quais requisições são autenticadas e como: cookie, bearer token, chave de API.

Um checklist de testes

Percorra as categorias do e do Web Security Testing Guide. O domínio deste site sobre o OWASP Top 10 mostra a correção de cada uma; aqui está como procurá-las.

  • Controle de acesso: reenvie as requisições da conta A com o token da conta B; altere ids; chame rotas de admin como usuário comum; teste métodos que a interface nunca usa.
  • Autenticação e sessão: no login e na redefinição, expiração e rotação de sessão, flags de cookie, validação de token.
  • Injeção: envie caracteres e tipos inesperados a cada parâmetro, cabeçalhos e campos JSON, e observe erros ou mudanças de comportamento.
  • Lógica de negócio: pule etapas, repita etapas, altere quantidades e preços, dispare duas requisições ao mesmo tempo (race condition).
  • Configuração incorreta: erros detalhados, endpoints de debug, listagem de diretórios, permissivo, cabeçalhos ausentes.
  • Tratamento de arquivos: verificações de tipo e tamanho, tratamento de caminhos, onde os uploads são armazenados e servidos.

Exemplo: uma verificação de autorização com duas contas

Automatize a comparação repetitiva e mantenha o teste somente leitura. Este script, para um alvo autorizado, verifica se a conta B consegue ler objetos criados pela conta A.

bola_check.py (apenas alvos autorizados)python
import requests

BASE = "https://api.example.com/v2"
A = {"Authorization": "Bearer <token do tester-a>"}
B = {"Authorization": "Bearer <token do tester-b>"}

# objetos que a conta A possui (listados com o token da própria A)
ids = [o["id"] for o in requests.get(f"{BASE}/invoices", headers=A, timeout=10).json()]

for oid in ids:
    r = requests.get(f"{BASE}/invoices/{oid}", headers=B, timeout=10)
    verdict = "VULNERABLE" if r.status_code == 200 else "ok"
    print(f"{oid}: B -> {r.status_code} {verdict}")
descoberta de conteúdo em taxa moderada (apenas alvos autorizados)bash
ffuf -u https://app.example.com/FUZZ -w common-paths.txt -rate 10 -mc 200,204,301,302,401,403 -o ffuf.json

Teste APIs de forma deliberada

  • Autorização em nível de objeto () e em nível de função são os achados mais comuns em APIs.
  • : envie campos extras (role, isAdmin, price) que o cliente nunca envia.
  • Exposição excessiva de dados: a API devolve objetos inteiros e a interface esconde campos; leia a resposta bruta.
  • Limites de taxa e de recursos em operações caras.
  • Deriva de versões: versões antigas da API e rotas não documentadas que não têm os controles das novas.
  • Fique dentro das : teste com dados de teste, evite chamadas destrutivas e mantenha a taxa de requisições baixa.
OWASP Top 10A lista de referência mais famosa de riscos de segurança em aplicações web (A01 acesso quebrado, A02 falhas criptográficas, A03 injeção...), revisada a cada alguns anos pela comunidade OWASP. É um mapa educacional de categorias de risco — não um checklist de ferramenta nem uma certificação.ver no glossário →Rate limitingLimite de requisições por entidade e janela de tempo. A escolha da chave (IP, conta, token, ASN) pesa tanto quanto o valor do limite.ver no glossário →CORScompartilhamento de recursos entre origensUm mecanismo do navegador que permite a um servidor dizer quais outras origens podem ler suas respostas. Uma origem curinga combinada com credenciais é uma má configuração.ver no glossário →IDORreferência direta insegura a objeto · BOLAA requisição nomeia um objeto (um id) e o servidor o devolve sem verificar se quem chama pode vê-lo. É a forma mais comum de controle de acesso quebrado e, em APIs, chama-se broken object level authorization.ver no glossário →Mass assignmentUma API associa campos enviados pelo cliente a um objeto, permitindo que quem chama defina campos (como um papel) que não deveria controlar.ver no glossário →Regras de engajamentoRoEO documento acordado que transforma a permissão em limites práticos: escopo, janela de tempo, ações proibidas, taxa de requisições, contatos de emergência e como os achados são reportados.ver no glossário →

conexões no mapa

atualizado em 14/10/2026 · fontes para aprofundar · reportar erro

em outros domínios

Estude antes

Desbloqueia

teste o que entendeu

Carregando perguntas…