A falha de XSS (Cross-site scripting) é uma vulnerabilidade que acontece do lado do cliente, isso quer dizer que o servidor da aplicação web não é afetado diretamente e sim o usuário que acessa aquele site, a falha tem como objetivo comprometer o usuário, usando para isso o seu navegador web.

Se quiser saber mais sobre a falha, segue dois links para leitura posterior, não vou ficar aqui explicando uma coisa que pode ser encontrado aos milhares pela internet:

http://pt.wikipedia.org/wiki/Cross-site_scripting
https://www.owasp.org/index.php/Cross-site_Scripting_%28XSS%29

Meu objetivo aqui é mostrar como essa falha é aplicada no meio hacker e principalmente no mundo do cibercrime, para isso vamos imaginar a seguinte situação:

Você recebeu um e-mail de um amigo, vamos supor que o conteúdo do e-mail era uma promoção do XBox One sendo vendido por quinze reais, é uma promoção incrível e acho que merece sua atenção, você então faz a compra do aparelho, informa seus dados, o número do seu cartão de crédito, seu nome completo, o código do cartão e pronto, você acabou de comprar um videogame por apenas quinze reais.
Você é uma pessoa de sorte, nem todos receberam esse e-mail avisando dessa incrível promoção, mas, vamos ver o que tem por trás disso tudo?

O e-mail que você recebeu foi sim do seu amigo, porém o computador dele ou sua conta de e-mail foi invadida e alguma quadrilha ou um hacker estão enviando SPAM pela conta de e-mail, esse campanha de SPAM é nada mais que uma campanha de Phishing, seu objetivo é enviar a maior quantidade de e-mails possíveis com coisas falsas, como por exemplo, uma promoção de videogame. Mas espera ai, o site que você entrou realmente existe e está tudo certo com ele, seu navegador não acusou nenhum malware ou qualquer problema relacionado com fraude bancária no site, é um site confiável e você até já fez compras nele anteriormente. O que acontece é que o site da loja virtual tem uma falha de XSS, essa falha compromete apenas você, o usuário que achou que tinha tirado a sorte grande, o link que os criminosos te mandaram realmente é da loja virtual que você conhece, porém, ele tem algumas alterações, como por exemplo a injeção de um formulário solicitando seus dados do cartão de crédito, depois que você digita seus dados eles não são enviados para a loja virtual e sim para um outro site, onde tudo foi preparado com muito carinho para roubar suas informações e depois serem vendidas em algum site clandestino por algumas dezenas de dólares.

xss001

xss002

Nas imagens acima podemos verificar um site com essa vulnerabilidade na variável que é passada via método GET, ou seja, os valores são passados pela URL.
Podemos confirmar isso usando um simples ALERT em Javascript, mas isso é básico demais e não traduz bem o problema que pode se tornar esse tipo de falha em um site.

Como no exemplo da compra do videogame por quinze reais, eu fiz um formulário básico onde são solicitados dados de cartão de crédito.

xss003

Exatamente no mesmo local onde inserimos o ALERT em JavaScript vamos colocar todo o nosso formulário de captura de dados de cartão e veja o que acontece.
Vou pegar todo o conteúdo que está dentro da tag <form></form> que são as tags em HTML usadas para criação de formulários.

xss004 xss005

 

Claro que ficou feio e teve alguns problemas relacionados com a acentuação, mas isso não importa, o importante aqui é entender o conceito e a forma como esse tipo de ataque é feito.

xss006

Repare que a Action do formulário é “/login.php”, essa action poderia ser enviada para qualquer local, inclusive um outro site fora do servidor onde o site se encontra. A Action como o nome já diz, é onde a ação vai ser executada, é onde vai ter algum script esperando pelas informações geradas no formulário falso, geralmente são scripts em JavaScript ou em PHP.

xss007

Um site que tenha a falha de XSS é capaz de aceitar quaisquer instruções, como um iframe por exemplo, conforme mostro na imagem abaixo.

xss008

Um exemplo de uma ação bem sucedida usando a falha de XSS para criar um formulário falso dentro de um site, no caso, eu usei em localhost.

xss009

Abaixo tem o script “login.php” que vai receber os dados do formulário.

xss010

Na sequência é mostrado o conteúdo que o script login.php recebeu.
De uma forma geral, esse tipo de dado é gravado em um arquivo TXT dentro do servidor ou em um banco de dados.

xss011

Abaixo segue um exemplo de uma action que direciona a ação para um local externo, nesse caso estou usando o formulário em localhost e a action vai ficar no meu site.

xss012 xss013 xss014

Espero que tenham gostado da postagem, já fazia um tempo que eu queria falar sobre XSS de uma forma mais prática, demonstrando como isso é usado de forma maliciosa e não apenas para fazer um ALERT em JavaScript dentro do site vulnerável.