¿Se puede usar postMessage para enviar datos al iframe del pirata informático en el ataque CSRF?

2

Considere a un usuario que tiene una sesión abierta a un sitio legítimo con una contraseña. Esta página no tiene token anti-CSRF.

Un hacker crea una página web con 2 iframes ocultos. Un iframe realiza un GET en la página con la contraseña y envía esta contraseña a través de html5 windows.postMessage () a otro iframe (que obtiene el sitio del atacante) que toma esta contraseña y la envía al sitio del pirata informático a través de un parámetro de consulta en http Accede al servicio web de un hacker.

A través de un ataque de phishing, el hacker atrae al usuario con una sesión abierta para hacer clic en el enlace de su página web que tiene estos 2 marcos y roba la contraseña.

¿Es posible este ataque?

    
pregunta Jason Weden 14.04.2015 - 18:31
fuente

2 respuestas

1
  

Un iframe realiza un GET en la página con la contraseña y envía esta contraseña a través de html5 windows.postMessage () a otro iframe (fuente del sitio del atacante) que toma esta contraseña y la envía al sitio del pirata informático mediante un parámetro de consulta en un http acceder al servicio web de un hacker.

postMessage se realiza con Javascript. Esto significa que uno no puede forzar un mensaje posterior con solo un ataque CSRF, a menos que la página víctima esté diseñada explícitamente de manera que las llamadas arbitrarias de mensaje posterior a las páginas de origen cruzado puedan ser activadas por una simple solicitud POST o GET. En su lugar, el atacante necesitaría la capacidad de inyectar secuencias de comandos para activar un mensaje posterior, es decir, necesita secuencias de comandos entre sitios (XSS). Pero si XSS es posible, generalmente no hay necesidad de hacerlo demasiado complejo mediante el uso de postMessage.

    
respondido por el Steffen Ullrich 14.04.2015 - 21:06
fuente
0

No - window.postMessage activa un evento de JavaScript, no un HTTP solicitud.

La ventana de destino debe estar escuchando el mensaje. Como se señaló en MDN:

  

Si no espera recibir mensajes de otros sitios, no agregue   Cualquier oyente de eventos para eventos de mensajes. Esto es completamente infalible.   Manera de evitar problemas de seguridad.

     

Si espera recibir mensajes de otros sitios, siempre verifique la identidad del remitente utilizando el origen.

Por lo tanto, esto no es un error de diseño con postMessage ; sin embargo, hay algunos fallas de implementación con postMessage , como este en WebKit :

  

Si un documento HTML contiene una etiqueta, el valor de su href   atributo sobrescribe el valor de document.documentURI. Esto es   inconsistente con los otros dos navegadores que implementan documentURI,   Firefox y Opera. Además, JavaScript no debería poder sobrescribir   el valor de document.documentURI.

     

Este error tiene algunas consecuencias de seguridad. Por ejemplo, un atacante puede   establece el parámetro uri de postMessage en un URI arbitrario, derrotando   Cualquier control de seguridad utilizando uri. El parámetro uri es importante para   distinguir entre HTTP y HTTPS, así como determinar si   el host del remitente es diferente de su valor document.domain.

    
respondido por el SilverlightFox 15.04.2015 - 11:22
fuente

Lea otras preguntas en las etiquetas