sábado, 20 de julho de 2013

E vamos continuar com nossa série, hoje vamos ver um pouco de Cross Site Scripting. Basicamente quando falamos de Cross Site Scripting (XSS) estamos falando de enviar códigos para o servidor ou diretamente para a vítima que diferente do Injection, vão ser executados e a resposta vai para o atacante. Como por exemplo, exibir informações indesejadas, redirecionar a vítima para um site falso ou até mesmo roubar informações de login.

No caso de injetar no servidor, você precisa ter acesso a uma área editável que interprete códigos, por exemplo uma área de comentários, onde você pode postar algo que sem moderação de um administrador vai ficar para sempre lá. Este tipo de ataque é conhecido como XSS Persistent, explico melhor e mais detalhado no post Explorando XSS com o OWASP ZAP.

Neste post vou falar de outro tipo de XSS, vou falar do Reflected. Neste caso, vamos enviar uma URL modificada, ou um site com parâmetros adulterados para quando a pessoa acessar ser infectada por algo. No nosso caso, vou apenas mostrar uma mensagem no site.

Para este teste não vou usar uma aplicação vulnerável propositalmente, vou usar um site oficial de venda de peças para uma certa marca de carros.




Um campo interessante para o XSS é o de busca que quase todos os sites tem e boa parte deles não é filtrada o que nos permite injetar esses códigos. Vamos fazer um teste, escrevendo "teste" no campo de busca:




Podemos ver que a minha string de busca foi parar na página, você pode ver que no topo da página tem um "parts matching teste" isso quer dizer que tem boas chances de o que eu colocar na busca pode ir parar na página, se for um código interpretado.



Agora vamos tentar colocar um teste que vai disparar uma mensagem de alerta quando a página for executada. Neste site em específico, depois do primeiro email que eu mandei avisando da falha, eles "resolveram" a falha restringindo o número de caracteres que eu posso digitar, nem pude terminar o comando, veja abaixo:

< script > alert ("teste") </ script>


Restringiram meu teste, mas veja como fica a URL quando eu pesquiso qualquer coisa:



Se eu colocar o código direto na URL ele vai sem filtro nenhum e é executado na página, mostrando o alerta que eu queria:



Agora que eu sei que a página executa qualquer código posso colocar um que redireciona o usuário para uma página falsa, ou mando um malware, ou se ele estiver logado roubo seus cookies, etc.

E para finalizar, todos os testes que eu fiz não alteraram nada no site e sim na url alterada que posso enviar para a vítima. Além do mais que eu já enviei inumeros avisos aos administradores do site sobre a falha.

Agora é com você, bons estudos e até a próxima.

0 comentários:

Postar um comentário

Subscribe to RSS Feed Follow me on Twitter!