¿Funciona CSRF cuando el sitio de destino no está abierto en una pestaña?

6

Este es un ejemplo de escenario de ataque de OWASP para CSRF

  

La aplicación permite a un usuario enviar una solicitud de cambio de estado que   No incluye nada secreto. Por ejemplo:

     

enlace

     

Entonces, el atacante construye una solicitud que transferirá dinero de   la cuenta de la víctima a la cuenta del atacante, y luego incrusta este   ataque en una solicitud de imagen o iframe almacenado en varios sitios bajo el   control del atacante:

     

<img src="http://example.com/app/transferFunds?amount=1500&destinationAccount=attackersAcct#“width="0" height="0" />

     

Si la víctima visita alguno de los sitios del atacante mientras ya está   autenticado en example.com, estas solicitudes falsificadas automáticamente   Incluya la información de la sesión del usuario, autorizando la solicitud del atacante.

Sin embargo, no entiendo el último párrafo. Si inicio sesión en una cuenta en example.com y luego dejo la página web sin cerrar sesión y ahora visito el sitio del atacante, ¿funciona este ataque? O para funcionar, ¿es necesario que esté en el sitio?

    
pregunta yzT 14.06.2013 - 16:38
fuente

3 respuestas

9

Cuando inicia sesión en example.com , su navegador almacena un token de sesión en una cookie. Este token de sesión identifica de forma única su sesión iniciada con example.com . Cada vez que su navegador realiza una solicitud a example.com , esa solicitud incluye sus datos de cookie example.com , incluido su token de sesión único.

Teniendo esto en cuenta, considera el hecho de que una página web puede hacer que tu navegador intente buscar cualquier recurso en la web , por ejemplo, a través de las etiquetas <img> o <iframe> . Si una página incluye una etiqueta que le pide a su navegador que obtenga una página de example.com , la búsqueda incluirá la información de su sesión. La solicitud se realiza en el contexto de su sesión de inicio de sesión (es decir, la recuperación se realiza como su cuenta de usuario de inicio de sesión example.com ).

Si la recuperación del recurso example.com provoca alguna acción , entonces usted (y el sitio) han sido víctimas de un ataque CSRF.

Para responder a su pregunta directamente: no, no necesita tener una página example.com abierta; solo necesita tener un token de sesión example.com válido en sus cookies.

    
respondido por el apsillers 14.06.2013 - 16:53
fuente
4

La víctima no necesita tener ese sitio abierto.

La víctima tiene una cookie que lo autentica a example.com ; cuando el navegador de la víctima solicita la URL en la etiqueta img, enviará la cookie example.com en el encabezado a la solicitud.

Al ver esta respuesta, su navegador ha realizado una solicitud a wikimedia.org , independientemente de si está navegando por separado o no en ese sitio:

Es el mismo principio en funcionamiento en el ejemplo de OWASP, pero en lugar de una imagen, estás realizando una acción (autenticada) en example.org .

    
respondido por el Michael 14.06.2013 - 16:40
fuente
0

Si la cookie es una cookie persistente, no es necesario abrir el sitio de destino.

Si la cookie es una cookie de sesión, el usuario tiene que autenticarse con el sitio de destino una vez para crear la cookie. Cada vez que el usuario cierra su navegador, la cookie de sesión se pierde.

En general, el navegador necesita la cookie para el sitio de destino.

    
respondido por el Rookian 09.01.2014 - 11:06
fuente

Lea otras preguntas en las etiquetas