O documento discute o ataque de Cross Site Scripting (XSS), onde um atacante usa códigos maliciosos em scripts no navegador para roubar cookies ou enganar usuários. Isso permite o controle da sessão da vítima e outros ataques. O documento explica como evitar XSS através da validação de parâmetros e codificação de saídas do usuário.
2. XSS (Cross Site Scripting)
• O ataque de XSS ocorre quando um atacante utiliza a aplicação web para
enviar códigos maliciosos, geralmente na forma de Browser Side Scripts
para um usuário acessar.
• A vulnerabilidade de Cross-Site-Script (XSS) é umas das mais antigas e
presentes desde os primórdios da programação para Web dinâmica, a falha
de XSS é extremamente encontrada nos sistemas Web , permite ao
atacante obter controle total da sessão de autenticação do usuário vítima.
• A vulnerabilidade de XSS executa códigos JavaScript no navegador da vítima
sem o consentimento dela. Com isto, é possível enviar requisições para o
servidor utilizando as credenciais de permissão da vítima atacada. Também
é possível fazer o sequestro de sessão (do inglês session hijacking), que
permite acessar o sistema com autenticação da vítima.
defacement(pixação), disseminação de worms, etc.
3. Ataque
• O atacante pode utilizar o XSS para enviar um script malicioso
com diversas finalidades:
- Roubar cookies do browser para efetuar um sequestro de
sessão;
- Iludir o usuário para que este acesse um determinado conteúdo
e preencha dados seus pensando que está utilizando o site real,
quando na verdade o conteúdo que o mesmo está acessando faz
parte de um HTML malicioso que foi embutido em algum
componente vulnerável da aplicação.
4. Exemplo
• http://www.eurocolori.com/page/prodotti.php?id=22"><script>alert("XXS DETECTED XCode Exploit
Scanner")</script>
• Ao acessar o endereço, o código Javascript será executado porém, enviando
o endereço citado acima, um usuário que tenha o mínimo de preocupação
com segurança facilmente notaria que se trata de uma tentativa de ataque.
Para evitar esse tipo de desfeche, um atacante tenta ao máximo esconder o
que poderia ser um ataque. Desta forma, a vítima ficaria insegura quanto à
possibilidade de ser um ataque ou não e, em muitas vezes, “arriscaria”. Um
exemplo onde o atacante “camuflaria” as assinaturas do ataque poderia ser
enviar o seguinte endereço:
• http://www.eurocolori.com/page/prodotti.php?id=22 =%3c%73%63%72%69%70%74%3e%61%6c
%65%72%74%28%27%56%75%6c%6e%65%72%61%76%65%6c%20%61%20%58%53%53%27%29%3c%2f
%73%63%72%69%70%74%3e
5.
6.
7. Como Evitar Ataques XSS
A melhor maneira de proteger uma aplicação web de ataques XSS é garantir
que sua aplicação realize validação de todos os cabeçalhos, cookies, strings de consulta,
campos de formulário e campos escondidos (i.e., todos os parâmetros) contra uma
rigorosa especificação do que pode ser permitido.
Codificar a saída fornecida pelo usuário pode ajudar a mitigar as
vulnerabilidades XSS prevenindo scripts inseridos de serem transmitidos para usuários em
formato executável. Aplicações podem ter ganhos significativos de proteção contra
ataques baseados em javascript pela conversão dos seguintes caracteres em todos as
entradas geradas para o código HTML apropriado:
De Para < < > > ( ( ) ) # # & &
O projeto de Filtros OWASP está produzindo componentes reutilizáveis em várias
linguagens para ajudar a prevenir muitas formas de adulterar parâmetros, incluindo a
injeção de ataques XSS. OWASP também tem lançado o CodeSeeker, um firewall de nível
de aplicação. Adicionalmente, o programa de treinamento OWASP WebGoat tem lições
sobre Cross Site scripting e codificação de dados.
8. DIEGO SOUZA / LEANDRO ALBERTO
TEMA : CROSS SITE SCRIPTING (XSS)
Trabalho apresentado à disciplina Segurança de Aplicativos ao
professor Ricardo Salvatore
• PÓS- GRADUAÇÃO SEGURANÇA EM REDES DE
COMPUTADORES
UNIVERSIDADE ESTÁCIO DE SÁ
RIO DE JANEIRO
2012