Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/03/2013, 11:14
Avatar de Ronin46
Ronin46
 
Fecha de Ingreso: junio-2009
Mensajes: 398
Antigüedad: 14 años, 10 meses
Puntos: 8
Duda session hijacking

Hola,

Veamos, hay algo que nunca he acabado de entender de todo lo que leo de session hijacking.

Si un atacante es capaz de obtener el identificador de sesión se dice que para evitar que se lleve a cabo tal robo es el de hacer una comprobación, como por ejemplo la de testear el user agent del usuario (entre otras, pero centremonos en esto).

Esto lo entiendo, ya que si un usuario estaba navegando con Firefox y de repente hace una petición con IE significa que algo sospechoso ha ocurrido.

Ahora bien, el obtener el user agent es algo trivial si has sido capaz de obtener el id de sesión, así que se propone el uso de un token, como por ejemplo:

Código PHP:
<?php
 $token 
$_SERVER['HTTP_USER_AGENT'];
$token .= 'PalabraSecreta';
 
$token md5($token);
 if (
$_SESSION['token'] === $token) ...
?>
Y es aquí donde yo me pierdo. Desde el momento en el que ese token se genera a partir de un dato que es exactamente el mismo para la víctima y al atacante, ¿qué más da la complejidad del token? Al final validarás contra lo que está guardado en el Id de sesión que es el mismo para los dos, así que se saltará el token.

También se propone el generar un token único, como por ejemplo:
Código PHP:
<?php
$token 
md5(uniqid(rand(),TRUE));
$_SESSION['token'] = $token;
?>
y luego el token resultante transmitirlo por GET o COOKIE, lo cual lo veo mejor que lo anterior, pero igualmente se me plantea lo mismo de antes: si un atacante ha sido capaz de obtener el ID de sesión, el obtener el resto de las cosas (parámetros GET o COOKIES) es igual de trivial.

Por más que busco no encuentro alguien que se pregunte lo mismo que yo, así que debo ser yo quien no se está percatando de algo. ¿Alguien me ilumina?

P.D: pregunta extra aunque relacionada. ¿por qué siempre que se habla de capturar datos se habla en el momento de que un usuario hace una petición al servidor web? ¿no se pueden capturar esos datos en el momento en el que el servidor web responde al usuario?

Saludos.
__________________
http://www.controldegastos.com, acepto sugerencias para el sitio.
Repetir conmingo: "tengo que dedicar más tiempo a gozar de placer"