Já por várias vezes mencionei neste blog o termo XSS como uma técnica utilizada para conseguir atingir alguns objectivos menos correctos perante um site/forum/etc, mas nunca expliquei realmente em que consiste.
O que é o XSS?O XSS (cross site scripting) é uma técnica que permite enviar snippets de código através de endereços URL, fóruns, qualquer serviço web com elevada interactividade.
Ultimamente esta técnica tornou-se um dos grandes problemas nos sites pelo motivo de que se encontra a ser cada vez mais utilizada, quer para roubar contas por
session hijacking (mais comum) quer para outras situações que irei contemplar mais à frente.
Com um simples comando javascript bem colocado é possível redireccionar um utilizador directamente para uma página (p.e www.google.com)
location.href="http://www.google.com"
Claro que na realidade ninguém usa esta técnica para redireccionar para sites como o google. Aqui o truque é redireccionar para uma página de conteúdo malicioso que irá tentar roubar as cookies do utilizador para ganhar acesso às suas contas, por exemplo.
E como isto é feito?O XSS é uma técnica relativamente fácil de aplicar, a dificuldade está na creatividade da utilização das instruções javascript para conseguir efectuar acções "produtivas".
Vou dar um exemplo de XSS básico com um serviço de guestbook conhecido:
Html Gear. Este serviço tem neste momento uma falha no campo "Homepage" do post de comentário, onde não filtra o conteúdo lá colocado pelo utilizador. Sendo devido a isso possível inserir o seguinte código ao fazer um post no guestbook no campo "Homepage":
www.minhahomepage.com" OnMouseOver="alert('owned!')No campo "Homepage", o que o utilizador colocar lá será colocado dentro de uma tag deste estilo:
<a href="o_url_da_homepage">homepage</a>
Se colocarmos o URL seguido de um fechar de aspas, tudo o que for colocado a seguir poderá ser interpretado como javascript, proporcionando a injecção do código que mostrei em cima.
Assim que for preenchido o resto do formulário e o post for submetido, sempre que o rato passar por cima do link irá aparecer uma alert box com a mensagem definida. Sabendo um pouco mais de javascript já dá para imaginar os estragos que se podem causar com esta pequena falha de validação do campo.