Análise de Vulnerabilidades Web

Identificação e correção de vulnerabilidades OWASP Top 10 em aplicação PHP

vulnerability_scan.sh

$ Análise completa de vulnerabilidades em aplicações web

$ Foco em XSS, SQLi, CSRF e outras ameaças OWASP Top 10

# Correções práticas e mitigação de riscos

Segurança em Aplicações Web

Aplicações web modernas enfrentam inúmeras ameaças. Identificar e corrigir vulnerabilidades é essencial para proteger dados e usuários.

riscos

$ Injeção SQL (SQLi)

$ Cross-Site Scripting (XSS)

$ Cross-Site Request Forgery (CSRF)

$ Quebra de autenticação

benefícios

$ Proteção de dados sensíveis

$ Conformidade com LGPD/GDPR

$ Confiança dos usuários

$ Redução de custos com incidentes

OWASP Top 10 Vulnerabilidades

# Vulnerabilidade Risco Exemplo Prevenção
1 Injeção SQL Crítico SELECT * FROM users WHERE username = 'admin'--' AND password = '' Prepared statements, ORMs, sanitização
2 Quebra de Autenticação Crítico Senhas fracas, sessões não invalidadas MFA, hash forte, timeout de sessão
3 Exposição de Dados Sensíveis Alto Dados não criptografados, logs com informações sensíveis Criptografia, data masking, headers de segurança
4 Entidades Externas XML (XXE) Alto Injeção de entidades XML maliciosas Desativar processamento de entidades externas
5 Quebra de Controle de Acesso Alto Acesso não autorizado a funções administrativas Princípio do menor privilégio, RBAC
6 Configuração Incorreta de Segurança Médio Configurações padrão, mensagens de erro detalhadas Hardening, revisão de configurações
7 Cross-Site Scripting (XSS) Alto <script>alert('XSS')</script> Escape de output, CSP, sanitização
8 Desserialização Insegura Alto Objetos serializados maliciosos Validação estrita, evitar desserialização
9 Componentes Vulneráveis Médio Bibliotecas desatualizadas com vulnerabilidades conhecidas Gestão de dependências, atualizações
10 Log e Monitoramento Insuficientes Médio Falta de detecção de atividades suspeitas Logs centralizados, SIEM, alertas

Injeção SQL (SQLi)

01

Identificação e Prevenção de SQLi

Vulnerabilidade

A injeção SQL ocorre quando um atacante consegue inserir comandos SQL maliciosos em campos de entrada, permitindo acesso não autorizado a dados.

exploit.php
// Código vulnerável
$username = $_POST['username'];
$password = $_POST['password'];
$query = "SELECT * FROM users WHERE username='$username' AND password='$password'";

// Ataque: username = admin'--
// Query resultante:
SELECT * FROM users WHERE username='admin'--' AND password=''
Data Breach Admin Access Data Loss

Prevenção

  • Usar prepared statements com parâmetros
  • Utilizar ORMs (Object-Relational Mapping)
  • Validar e sanitizar todas as entradas
  • Princípio do menor privilégio para contas de banco de dados
solution.php
// Código seguro com prepared statements
$stmt = $pdo->prepare("SELECT * FROM users WHERE username=:username AND password=:password");
$stmt->execute([
'username' => $_POST['username'],
'password' => $_POST['password']
]);
$user = $stmt->fetch();
Prepared Statements Input Validation Least Privilege

Cross-Site Scripting (XSS)

02

Tipos de XSS e Mitigação

Tipos de XSS

XSS permite que atacantes injetem scripts maliciosos que são executados no navegador das vítimas.

exploit.html
// XSS Armazenado (persistente)
<script>stealCookies()</script>

// XSS Refletido (não persistente)
http://site.com/search?q=<script>alert(1)</script>

// DOM-based XSS
document.write('<img src="'+location.hash.substr(1)+'">');
Cookie Theft Keylogging Defacement

Prevenção

  • Escapar dados antes de exibi-los (htmlspecialchars em PHP)
  • Implementar Content Security Policy (CSP)
  • Validar e sanitizar todas as entradas
  • Usar headers de segurança como X-XSS-Protection
solution.php
// Escapando output em PHP
echo htmlspecialchars($userInput, ENT_QUOTES, 'UTF-8');

// Configurando CSP header
header("Content-Security-Policy: default-src 'self'; script-src 'self'");

// Sanitizando input
$cleanInput = filter_input(INPUT_GET, 'q', FILTER_SANITIZE_STRING);
Output Encoding CSP Input Sanitization

Cross-Site Request Forgery (CSRF)

03

Proteção Contra CSRF

Ataque CSRF

CSRF força um usuário autenticado a executar ações indesejadas em um aplicativo web sem seu conhecimento.

exploit.html
<img src="http://bank.com/transfer?to=hacker&amount=1000" width="0" height="0">

// Se o usuário estiver autenticado no banco,
// a transferência será executada sem seu conhecimento
Unauthorized Actions Session Hijacking Financial Loss

Prevenção

  • Implementar tokens CSRF (Synchronizer Token Pattern)
  • Usar SameSite cookies
  • Validar origem (Origin/Referer headers)
  • Exigir confirmação para ações críticas
solution.php
// Gerando token CSRF
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));

// Incluindo token no formulário
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">

// Validando token na submissão
if (!hash_equals($_SESSION['csrf_token'], $_POST['csrf_token'])) {
die('CSRF token validation failed');
}
CSRF Tokens SameSite Double Submit

Headers de Segurança

04

Configurações Recomendadas

Problemas

Configurações padrão de servidores podem expor informações sensíveis ou permitir comportamentos inseguros.

vulnerability.sh
GET / HTTP/1.1
Server: Apache/2.4.6 (CentOS)
X-Powered-By: PHP/5.6.40
Access-Control-Allow-Origin: *
# Informações expostas e CORS inseguro
Info Leak Clickjacking CORS Misconfig

Configurações Recomendadas

  • Implementar headers de segurança modernos
  • Remover headers que expõem informações do servidor
  • Configurar políticas de CORS restritivas
  • Forçar HTTPS e HSTS
solution.conf
# Headers de Segurança
Content-Security-Policy: default-src 'self'
Strict-Transport-Security: max-age=31536000
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
Referrer-Policy: strict-origin-when-cross-origin
CSP HSTS CORS

Ferramentas de Análise

OWASP ZAP

Scanner automatizado para encontrar vulnerabilidades em aplicações web

Pentesting Automation

Burp Suite

Plataforma completa para teste de segurança em aplicações web

Proxy Scanner

SonarQube

Análise estática de código para identificar vulnerabilidades

SAST Code Quality

Fluxo de Correção

1
Identificação

Utilizar ferramentas automatizadas e revisão manual para identificar vulnerabilidades

Scanning Code Review
2
Priorização

Classificar vulnerabilidades por criticidade (CVSS) e impacto no negócio

Risk Assessment Prioritization
3
Correção

Implementar soluções técnicas para cada vulnerabilidade identificada

Secure Coding Mitigation
4
Validação

Testar as correções para garantir que as vulnerabilidades foram resolvidas

Verification Regression