Como realizar um pentest básico na sua própria aplicação web
1. Fundamentos e Preparação para o Pentest
Pentest (teste de penetração) é uma atividade controlada que simula ataques reais para identificar vulnerabilidades em sistemas. Diferente de varreduras automatizadas que apenas escaneiam superfícies, o pentest manual explora lógicas de negócio e combina falhas que ferramentas isoladas não detectam.
Antes de começar, defina o escopo: especifique quais URLs, funcionalidades e dados serão testados. Obtenha autorização por escrito do proprietário da aplicação. Ferramentas essenciais incluem:
- Burp Suite Community Edition — proxy de interceptação para análise de tráfego HTTP/HTTPS
- OWASP ZAP — scanner de segurança open source com modo headless e spidering
- Navegador com DevTools — inspeção de requisições, cookies e console de erros
- Extensões — Wappalyzer (identificação de tecnologias), FoxyProxy (gerenciamento de proxy)
2. Reconhecimento e Mapeamento da Aplicação
Inicie coletando informações públicas. Acesse a aplicação e analise:
- URLs e parâmetros GET/POST
- Formulários de login, cadastro e busca
- Cabeçalhos HTTP (response headers)
- Arquivos
robots.txtesitemap.xml
Mapeie o fluxo de autenticação: como o login é processado, como a sessão é mantida (cookies, tokens JWT) e quais papéis de usuário existem (admin, editor, visitante). Identifique endpoints sensíveis como /admin, /api/users, /config.
Exemplo de análise de cabeçalhos HTTP com curl:
curl -I https://sua-aplicacao.com
Saída esperada:
HTTP/2 200
server: nginx
x-frame-options: DENY
content-security-policy: default-src 'self'
strict-transport-security: max-age=31536000
3. Testes de Injeção (SQL Injection e XSS)
SQL Injection
Teste campos de busca e login com payloads básicos. Em um campo de usuário, insira:
admin' OR '1'='1
Se a aplicação retornar dados sem autenticação correta, há vulnerabilidade. Verifique também parâmetros GET:
https://sua-aplicacao.com/produto?id=1' OR '1'='1'--
Use o OWASP ZAP para varredura automatizada:
zap.sh -cmd -quickurl https://sua-aplicacao.com -quickout relatorio.html
Cross-Site Scripting (XSS)
Teste XSS refletido em campos de busca:
<script>alert('XSS')</script>
Se o script executar, a aplicação não sanitiza entrada. Para XSS armazenado, insira o payload em campos de comentário ou perfil e verifique se persiste ao recarregar a página.
4. Análise de Autenticação e Gerenciamento de Sessão
Força de Senhas e Bloqueio
Teste senhas fracas (123456, admin, password). Verifique se há bloqueio após 5 tentativas incorretas. Se não houver, força bruta é possível.
Tokens de Sessão
Inspecione cookies no DevTools. Verifique se o token de sessão contém dados previsíveis (timestamp, hash do email). Exemplo de cookie vulnerável:
session_id=MTY4OTg3NjQwMA==
(Base64 de timestamp — facilmente decodificável)
Logout e Reutilização
Realize logout e tente reutilizar o cookie antigo. Se o servidor aceitar, a sessão não foi invalidada corretamente.
5. Verificação de Controles de Acesso e Configuração
Escalonamento de Privilégios
Crie duas contas: usuário comum e admin. Com a conta comum, tente acessar URLs de admin diretamente:
GET /admin/dashboard
Se retornar 200, há falha de autorização.
Cabeçalhos de Segurança
Analise os cabeçalhos HTTP. Verifique se estão presentes:
Content-Security-Policy: default-src 'self'
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
Strict-Transport-Security: max-age=31536000
Exposição de Arquivos Sensíveis
Acesse URLs como:
https://sua-aplicacao.com/.git/config
https://sua-aplicacao.com/backup.sql
https://sua-aplicacao.com/robots.txt
Se retornarem conteúdo, há vazamento de informações.
6. Testes de Lógica de Negócio e Validação de Entrada
Fluxos Alternativos
Em um processo de compra, tente pular a etapa de pagamento enviando requisição direta para confirmação. Use o Burp Suite para interceptar e modificar requisições:
POST /checkout HTTP/1.1
...
step=payment&skip=true
Upload de Arquivos
Tente enviar arquivos com extensões maliciosas:
shell.php
shell.php.jpg
Verifique se o servidor executa o arquivo. Teste também limites de tamanho (arquivo de 10MB em campo que espera 1MB).
Manipulação de Parâmetros
Em um carrinho de compras, intercepte a requisição de atualização:
POST /carrinho/atualizar HTTP/1.1
...
produto=123&quantidade=1&preco=10.00
Altere preco para 0.01 e veja se o sistema aceita.
7. Documentação e Próximos Passos
Registre cada vulnerabilidade com:
- Título (ex: SQL Injection em campo de busca)
- URL e parâmetro afetado
- Payload utilizado
- Evidência (print, log, resposta do servidor)
- Severidade baseada no OWASP Risk Rating (Impacto × Probabilidade)
Priorize correções: falhas de autenticação e injeção são críticas; cabeçalhos de segurança são médias. Integre testes contínuos usando OWASP ZAP em pipelines CI/CD:
zap.sh -cmd -quickurl https://staging.aplicacao.com -quickout relatorio.html -config rules.cookie.alert=false
Referências
- OWASP Testing Guide v4 — Guia completo de metodologias e casos de teste para pentest web
- Burp Suite Community Edition Documentation — Documentação oficial do proxy de interceptação e ferramentas de análise
- OWASP ZAP User Guide — Manual completo do scanner de segurança open source com exemplos de uso
- PortSwigger Web Security Academy — Laboratórios práticos gratuitos sobre SQL Injection, XSS e autenticação
- Mozilla Observatory — Ferramenta para verificar cabeçalhos de segurança e boas práticas de configuração
- CWE Top 25 Most Dangerous Software Weaknesses — Lista das vulnerabilidades mais comuns com descrições e exemplos
- HackerOne Hacktivity — Relatórios reais de vulnerabilidades descobertas em programas de bug bounty