Ataque de las alertas y el script Zombie en Internet Explorer 11
Una nueva investigación muestra como el dueño de una página web puede mostrar popups sin fin al usuario incluso después de que éste ha abandonado ya su página, e incluso peor, ejecutar cualquier tiempo de javascript persistente cuando el usuario ya está en otros dominios. El ataque sólo funciona en IE11, que tiene un 10% de usuarios. De momento no hay solución y el investigador que lo ha descubierto ha dejado de avisar a Microsoft de bugs debido a que sus informes anteriores han sido ignorados. El artículo incluye demo del bug.
¿Ha notado recientemente que todos los navegadores tienen una función para bloquear alertas perpetuas? Tan pronto como se ejecuta una segunda alerta viene con una casilla de verificación para desactivar las siguientes, al igual que esto:
Esto nos da a los malos programadores la posibilidad de salir de los circuitos de alerta sin fin, pero lo que es más importante, permite al usuario defenderse de páginas maliciosas que literalmente bloquean la interfaz con mensajes falsos. Los usuarios tienen ahora la posibilidad de bloquear todas las alertas siguientes marcando esa casilla, pero con el objeto de ventana ActiveX podemos seguir lanzando alertas infinitas sin ninguna manera de escapar de ellas.
Es importante entender por qué estamos utilizando miembros específicos de este htmlFile / ActiveX (como la forma de obtener su objeto de ventana). De todos modos, vamos a utilizar el método de alerta de ActiveXObject que elimina completamente la preferencia del usuario de "no más alertas por favor!".
Podemos lanzar infinitas pero para esta demostración lo haremos con sólo tres.
Pero Esto no es impresionante, pero mantendrá ocupado al usuario ya los investigadores sorprendentes. Sé que las alertas no son interesantes y vamos a ser honestos, una vez que el usuario tiene la oportunidad de salir de la página, él estará libre de nuestras alertas horribles, ¿verdad? ¡Incorrecto! Podemos ser persistentes y seguir ejecutando nuestro código incluso después de que él dejó nuestra página. Imagina a un usuario que va a Google tratando de escapar de nosotros, pero sigue recibiendo nuestras alertas
Vamos a hacerlo, no es difícil en absoluto.
Código persistente
Para que nuestro código sea persistente (o un script zombie como algunos lo llaman), necesitamos mantener una referencia al objeto que ejecuta el script y hacer una llamada al método window.open. Esas dos cosas harán IE pensar que no debería destruir el objeto porque todavía hay una referencia a él. Lo bueno es que la referencia puede estar en el objeto mismo!
Sólo una cosa más: tenga en cuenta que el uso del método window.open no significa que necesitamos literalmente abrir una ventana / pestaña. De hecho, usaremos un truco muy simple / viejo que aparentemente no hace nada: window.open en la misma ventana con una URL vacía.
¡Eso es! Ahora el usuario puede escribir cualquier cosa en la barra de direcciones, hacer clic en los enlaces o navegar tanto como quiera, pero nuestro script siempre estará con ella hasta que la pestaña esté cerrada. Y por cierto, todo aquí se puede hacer directamente desde dentro de un iframe en un dominio diferente, y todavía funciona.
Fuente:
http://www.brokenbrowser.com/zombie-alert/
ActiveXObject.
¿Ha notado recientemente que todos los navegadores tienen una función para bloquear alertas perpetuas? Tan pronto como se ejecuta una segunda alerta viene con una casilla de verificación para desactivar las siguientes, al igual que esto:
Esto nos da a los malos programadores la posibilidad de salir de los circuitos de alerta sin fin, pero lo que es más importante, permite al usuario defenderse de páginas maliciosas que literalmente bloquean la interfaz con mensajes falsos. Los usuarios tienen ahora la posibilidad de bloquear todas las alertas siguientes marcando esa casilla, pero con el objeto de ventana ActiveX podemos seguir lanzando alertas infinitas sin ninguna manera de escapar de ellas.
Es importante entender por qué estamos utilizando miembros específicos de este htmlFile / ActiveX (como la forma de obtener su objeto de ventana). De todos modos, vamos a utilizar el método de alerta de ActiveXObject que elimina completamente la preferencia del usuario de "no más alertas por favor!".
Podemos lanzar infinitas pero para esta demostración lo haremos con sólo tres.
O bien mostrar 10 alertas:doc = new ActiveXObject("htmlFile");win = doc.Script; // win is the window object of the ActiveXObjectwin.alert("Hello");win.alert("2nd alert, no option to block me.");win.alert("3rd alert, and still no way out!");
for (var i = 0; i < 10; i++){doc = new ActiveXObject("htmlFile");win = doc.Script; // win is the window object of the ActiveXObjectwin.setTimeout("alert('Hello, world!')", i * 100);}
[Ver el PoC Live en IE11]
Pero Esto no es impresionante, pero mantendrá ocupado al usuario ya los investigadores sorprendentes. Sé que las alertas no son interesantes y vamos a ser honestos, una vez que el usuario tiene la oportunidad de salir de la página, él estará libre de nuestras alertas horribles, ¿verdad? ¡Incorrecto! Podemos ser persistentes y seguir ejecutando nuestro código incluso después de que él dejó nuestra página. Imagina a un usuario que va a Google tratando de escapar de nosotros, pero sigue recibiendo nuestras alertas
Vamos a hacerlo, no es difícil en absoluto.
Código persistente
Para que nuestro código sea persistente (o un script zombie como algunos lo llaman), necesitamos mantener una referencia al objeto que ejecuta el script y hacer una llamada al método window.open. Esas dos cosas harán IE pensar que no debería destruir el objeto porque todavía hay una referencia a él. Lo bueno es que la referencia puede estar en el objeto mismo!
- Guarde una referencia al ActiveXObject.
- Utilice el método window.open.
Sólo una cosa más: tenga en cuenta que el uso del método window.open no significa que necesitamos literalmente abrir una ventana / pestaña. De hecho, usaremos un truco muy simple / viejo que aparentemente no hace nada: window.open en la misma ventana con una URL vacía.
Doc = new ActiveXObject ("htmlFile");
// Alerta cada 5 segundos
Doc.Script.setInterval ("alert ('Hola, mundo!')", 5000);
// Guardar una auto-referencia
Doc.Script.doc = doc;
// Utilice el método open. Nada cambia aquí, pero ahora IE no
// destruir la referencia anterior y el script continuará ejecutándose.
Window.open ("", "_ self"); // "No hace nada", pero esta línea es crucial.
¡Eso es! Ahora el usuario puede escribir cualquier cosa en la barra de direcciones, hacer clic en los enlaces o navegar tanto como quiera, pero nuestro script siempre estará con ella hasta que la pestaña esté cerrada. Y por cierto, todo aquí se puede hacer directamente desde dentro de un iframe en un dominio diferente, y todavía funciona.
Fuente:
http://www.brokenbrowser.com/zombie-alert/
Via: blog.elhacker.net
Ataque de las alertas y el script Zombie en Internet Explorer 11
Reviewed by Zion3R
on
19:05
Rating: