quinta-feira, 11 de julho de 2013

Estou praticando a alguns dias minhas habilidades de segurança em geral no projeto Hacking-Lab da OWASP. Já postei aqui sobre esse projeto, ele está cada vez maior, com mais desafios e cada vez com mais empresas olhando. Recomendo a todos que criem uma conta, estudem pelos links disponibilizados nos próprios desafios e tente resolver os desafios. Já houve casos de contratação por empresas gigantescas através dos resultados no site.

Hoje resolvi o desafio de XSS na categoria OWASP Top 10, e tive que aprender algumas coisinhas para que tudo funcionasse, veja aqui algumas dicas (sim, não vou entregar tudo se não entrego a resposta do desafio :D ) que tive que aprender para resolver o desafio: 

Vamos pular a parte de baixar e configurar todo o lab, se vire com isso :)

O objetivo do desafio é que eu consiga postar nos comentários de um site específico deles um código malicioso que capture e envie para um site meu os cookies de todos os usuários autenticados que abrirem a página de comentários.

Antes de mais nada eu precisava descobrir algum lugar que fosse vulnerável a XSS, nas dicas do site tinha que eu deveria comprar uns sinos para vacas personalizados (sim o site é um e-commerce disso) para poder ver a área de comentários. Após colocar alguns sinos no carrinho finalizei a compra (com um cartão e usuários fictícios) tive acesso a área de comentários. Fiz então o que qualquer um faria, testar se o campo era vulnerável, colocando um código javascript no comentário e obtive a resposta de que o comentário só poderia conter letras, números, pontos e vírgulas, então meu código não iria funcionar. O código que eu usei foi o seguinte:

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

Como não posso usar nenhum símbolo o que eu posso fazer? Depois de pensar muuuuito eu lembrei de uma das minhas aulas da Clavis onde demos uma leve passada por uma tool chamada Burp Suite, que uma de suas funções é manipular os GETS, POSTS e tudo mais de uma aplicação web, com isso quem sabe eu poderia manipular depois desse teste meu input e assim explorar o XSS.

Depois de muito procurar na distro disponibilizada pelo hacking-lab percebi que eles não tinham o Burp Suite disponível para uso e então fui em busca do download pelos repositórios que também não tinham. Apos algumas buscas no Google consegui baixar mas não consegui usar, parece que não tem java essa vm...

Depois de perder um bom tempo dando voltas achando um modo de fazer aquilo funcionar decidi dar uma olhada nas tools que eles tinham disponíveis, e eis que encontro um tal de OWASP ZAP. Novamente fui para as buscas e manuais para aprender como usar e configurar essa tool e vi que não é muito difícil, no próprio site da tool tem tudo explicadinho.


Após tudo configurado e funcionando vamos ao site alvo. O OWASP ZAP é bem similar ao Burp Suite no que eu sei usar então não foi uma adaptação muito difícil.

O Firefox da VM tem um plug-in já configurado com o proxy do ZAP, só ativar e iniciar a interceptação no proxy, clicando nas duas setas verdes na barra de ferramentas, sendo uma delas para interceptar as requisições e a outra para as respostas do servidor.



Agora com tudo pronto vamos a exploração. Coloco qualquer coisa no campo de comentário e assim que eu clicar em adicionar (Add) eu já vou ter um resultado no ZAP.



Repare que no final da terceira linha eu tenho um parâmetro chamado comment=teste, vamos alterá-lo para nosso código malicioso de teste e ver o que acontece:


E ai está! Consegui burlar o filtro e injetar meu código que vai rodar para todos os usuários que visualizarem a página com os comentários. Agora para o desafio, só precisamos alterar o comando para o comando que manda o cookie, mas isso eu deixo para vocês para completarem o desafio.

Bons estudos!

2 comentários:

Subscribe to RSS Feed Follow me on Twitter!