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.txt e sitemap.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