domingo 6 de diciembre de 2009

Pentest: Insecure Cookie Handling

No había tenido imaginación para escribir en los últimos dias pero hoy me desperte y un amigo me estaba pidiendo ayuda con una Sql Injection, despues de un rato de salir a comprar un te helado entre a una web que tenía este error así que hoy les voy a explicar masomenos el funcionamiento de ese bug.


Lo primero vamos a ver la linea de código que le asigna una COOKIE a digamos el administrador

setcookie("testcookie","1");


Ahora como vemos ya sabemos que la cookie se llama testcookie pero por ahora no nos vamos a fijar en eso...

miren este code:

if($_COOKIE['testcookie']=="1")
{
include "/2009/12/admin.html";
}
else {
die('no eres el admin'); }


Recuerda el tutorial de argument injection ya pues esto va a ser algo parecido... el anterior code dice que si nosotros tenemos testcookie entonces nos hara un include del admin.php

Ahora miren el code del login...


if($_POST['pass'] == $hashedpass) {
setcookie("testcookie","1"); //esto lo vimos antes
} else {
die("no entraste");
}


como ven lo que dice es lo siguiente... si nuestra pass es la pass que haya escojido el administrador nos asigna una cookie que es testcookie y cuando apretamos mas abajo pregunta en el code digamos que esta lo mismo que pusimos en el code numero 1:

if($_COOKIE['testcookie']=="1")
{
include "/2009/12/admin.html";
}
else {
die('no eres el admin'); }

jeje ahora si creo que no puede estar mas claro pero en resumen es... si la pass es correcta nos pone una cookie y si la tenemos nos lleva a admin.php


Ahora si ni mas que decir la expl0tación...


vamos a nuestro browser...

y donde se pone la url ponemos:

javascript:document.cookie = "/2009/12/testcookie_path/index.html";


como ven nos hemos asignado la cookie... y el path=/ quiere decir que nos va a funcionar en todo el dominio... pero también podemos usar los headers... con el live-http-headers y hacer un set-cookie y ponernosla pero bueno ahora si creo que ya solo nos queda navegar y buscar lo que nos interese.


Ustedes pensarán como obtenemos la cookie pues esa es la parte difícil, por eso en previas entradas he hablado sobre un par...


Session Prediction

Robo de cookies por un Xss

Ahora si no pueden hacer ninguna de estas puede ser con algo de ingeniería social...

-------------


como lo reparamos?

Esta pregunta tiene muchas respuestas como la mayoría de preguntas en lo que es seguridad informática pero pues la que yo les puedo dar es que usen sesiones, en el caso muy no recomendado que quieran usar cookies pues les recomiendo que hagan la cookie random y que duren maximo 1h cosa que el atacante no tenga mucho tiempo y que el administrador tenga sierto tiempo en poner solo lo necesario.


Espero les sirva este tutorial...



Saludos
Dr.White