Cross Site Scripting (XSS) é uma vulnerabilidade comum em aplicações web que permite a injeção de código malicioso no navegador de usuários. Existem três tipos principais: não persistente, persistente e baseado em DOM. XSS pode levar a sequestro de sessões, redirecionamento para sites maliciosos e roubo de dados. Técnicas como codificação de entrada e saída podem ajudar a prevenir ataques XSS.
1. Cross Site Scripting
Fátima Ferreira de Sousa
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DA PARAIBA
Campus Cajazeiras
Curso Superior de Tecnologia em Análise e Desenvolvimento de
Sistemas
Disciplina: Segurança de Dados
Professor: Humberto Nunes
2. Cross Site Scripting ( XSS)
• É uma vulnerabilidade encontrada em aplicações
WEB que permite ao atacante inserir código em
uma página visitada por outro usuário.
• É causado por falhas nas validações dos
parâmetros de entrada do usuário e resposta do
servidor.
• Terceira de maior risco no Top Tem OWSASP 2013;
2
3. Cross Site Scripting ( XSS) - Ataque
• Na prática, o responsável pelo ataque executa
instruções no navegador da vítima usando um
aplicativo web vulnerável;
• Através de um XSS, o cracker injeta códigos
JavaScript em um campo texto de uma página já
existente e este JavaScript é apresentado para
outros usuários.
• Qualquer fonte de dados pode ser um vetor de
ataque, incluindo fontes internas como dados do
banco de dados.
3
6. Tipos de XSS
O XSS pode ser dividido em três categorias:
• Não persistente,
• Persistente (Stored),
• Document Object Model (DOM) Based.
6
7. Tipos de XSS – Não persistentes
• A exploração dessa vulnerabilidade envolve a
elaboração de uma solicitação com código a ser
inserido embutido e refletido para o usuário alvo
que faz a solicitação.
• São os mais comuns, sendo os principais
responsáveis por ataques de phishing.
• Esse tipo de ataque depende de uma ação do
usuário – normalmente um click num link.
7
8. Tipos de XSS – Não persistentes
• Um ataque Não persistente é normalmente
entregue via e-mail ou um site neutro.
• A isca é uma URL de aparência inocente,
apontando para um site confiável, mas contendo o
vetor de XSS.
• O XSS se beneficia da confiança depositada pelo
usuário no domínio.
8
10. Tipos de XSS – Persistentes
• Variante mais devastadora de uma falha de script cross-site;
• Ocorre quando os dados fornecidos pelo atacante são
salvos pelo servidor exibidos em páginas “normais”;
• Não depende da ação do usuário;
• Acontece em sites no qual o atacante pode postar texto:
• Fóruns, Twitter, Facebook;
• O código é projetado para se auto propagar através de contas,
criando um tipo de verme do lado do cliente.
10
11. Tipos de XSS – Persistentes
• O usuário torna-se vítima ao acessar a área afetada pelo
armazenamento do código mal-intencionado.
• Um usuário mal-intencionado pode potencialmente
atingir um grande número usuários apenas com uma
ação específica e facilitar o processo de engenharia
social.
• O atacante não precisa nem interagir diretamente com
a funcionalidade web para explorar esta vulnerabilidade.
11
13. Tipos de XSS – DOM
• Ocorre quando um código JavaScript usa o parâmetro
passado na URL para escrever na própria página;
• Não necessita de interações diretas com o aplicativo
web;
• O código fonte da página é alterado, e apenas (por
norma) somente sofre essa alteração quando o
atacante assim o desejar.
• Utiliza-se de vulnerabilidades existentes na
interpretação do código HTML no ambiente do
navegador do usuário alvo.
13
14. Tipos de XSS – DOM
• Nos XSS baseados em DOM, os dados maliciosos não
tocam no servidor web;
• Uma das grandes {des}vantagens deste tipo de
ataque é sua discrição, ou seja, a vítima não
percebe que está sendo atacada.
14
16. Consequências do Ataque
• Dentre as principais consequências para o usuário
afetado, incluem:
• O Sequestro de sessão de usuários;
• Alteração do código HTML do aplicativo (visível somente do
lado do cliente);
• Redirecionar o usuário para sites maliciosos;
• Alteração do objeto DOM para captura de dados ou envio
de malware.
• Desfigurar sites;
• Inserir conteúdo hostil;
16
18. Protegendo-se contra-ataques XSS
• Identificar todas as instâncias dentro da aplicação
em que os dados são colocados nas respostas das
requisições;
• Verificar o formato dos dados introduzidos pelos utilizadores;
• Codificar os dados dos utilizadores afixados substituindo os
caracteres especiais pelos seus equivalentes em HTML ou na
tabela ASCII;
• As regras de negócio sobre os dados antes de aceitar a
entrada.
18