Desvío de clics: no sólo por los clics

Versión resumida

Puede animar a los usuarios a "teclear" datos como parte de un ataque de clickjacking.
Demostración en YouTube : https://www.youtube.com/watch?v=VIEZ1aByFvU

PoC GitHub Repo : https://github.com/hoodoer/dragInputClickjacking

Detalles :

Recientemente tuve una tarea en la que pude insertar partes sensibles de una aplicación en un iframe que me permitía modificar datos financieros. Sin embargo, la modificación de los datos para permitir el "robo" de fondos requería que el usuario administrador introdujera números, no solo que pulsara botones en la aplicación.

En el pasado, sólo había utilizado ataques de clickjacking, que utilizaban los clics del ratón para realizar acciones maliciosas, normalmente implicando una secuencia de clics del ratón (un simple ejemplo de prueba de concepto aquí).

Indagando un poco, he encontrado referencias en Hacktricks que indican que es posible realizar entradas "tecleadas" como parte de un ataque de secuestro de clics, algo de lo que nunca me había dado cuenta.

Aunque los usuarios pueden escribir directamente en los campos de entrada ocultos del sitio iframed, es poco probable que se les convenza de hacerlo.

Sin embargo, un juego que requiera que el usuario arrastre una imagen hasta un objetivo podría proporcionar un reto de ingeniería social más realista.

En un elemento HTML móvil, puede desencadenar una acción consistente en introducir un texto arbitrario en un campo de formulario, incluso si este campo está oculto en el sitio iframed. El navegador considera que se trata de una acción iniciada por el usuario y permite las entradas entre dominios.

El código es bastante sencillo:

El código transferencia de datos le permite definir lo que se "escribe" cuando el usuario suelta la imagen. No tiene por qué ser una imagen, pero sin duda es algo práctico que los usuarios pueden arrastrar como parte de la prueba de concepto.

Intenté colocar este elemento de arrastre en un iframe separado que pudiera superponer sobre el sitio oculto/iframado; sin embargo, esto no pareció funcionar, sin importar el orden z que utilizara. Aparentemente, arrastrar de un iframe a otro no funciona para esta técnica, por lo que tendrás restricciones sobre dónde puedes colocar el elemento de arrastre en tu ataque.

En el código de ejemplo proporcionado, simplemente lo coloco encima de la aplicación iframmed y lo hago visible en la fase de ataque en la que necesito que "escriban" un valor de entrada.

En el código de demostración, tengo una página sencilla que muestra un formulario de "ajuste salarial" después de hacer clic en un botón. En este formulario, se puede introducir y enviar una cantidad arbitraria para supuestamente ajustar el salario de un empleado.

Añadiremos 10.000.000 de dólares en la demo. Al fin y al cabo, se acercan las fiestas.

En primer lugar, vamos a clonar la base de datos e iniciar un servidor HTTP local:

git clone https://github.com/hoodoer/dragInputClickjacking
cd dragInputClickjacking
python3 -m http.servidor 80

Si abre http://127.0.0.1/clickjackPoc.html en tu máquina local, se cargará la prueba de concepto. Si haces clic en el botón "Start Game", el juego se iniciará y podrás "jugar". Si no haces clic en nada después del botón de inicio, el juego se ejecutará, pero no habrá clickjacking. Puedes actualizar la página para reiniciar el juego.

Figura 1 - Prueba de concepto de desvío de clics

Puede ver la aplicación iframed parcialmente oculta. En un ataque real de clickjacking, estaría completamente oculta. Puede ajustar la opacidad de la aplicación iframed en la parte superior de la ventana clickjackPoc.html . El ajuste por defecto es 30 %.

Una vez que se ha pedido al usuario que haga clic en el primer botón, el formulario de ajuste de nómina se "muestra" en la aplicación iframed.

Figura 2 - Formulario de adaptación del cheque

El usuario tiene que "teclear" 10.000.000 $ en este campo. Es entonces cuando la siguiente fase del juego pide al usuario que arrastre rápidamente un objeto hasta el objetivo.

Figura 3 - Logotipo del resbalón

Cuando el usuario arrastra nuestra imagen al campo de entrada y la suelta, el valor 10000000 se "teclea" en el campo.

Figura 4 - Campo de entrada rellenado

En el último paso, el usuario pulsa el botón de envío y podemos ver que este valor se ha enviado correctamente al servidor de aplicaciones.

Figura 5 - Ajuste de las nóminas presentado

He aquí una rápida demostración del uso de elementos deslizantes para "teclear" entradas en un ataque de clickjacking. El mérito es de Hacktricks, a quien se le ocurrió la idea.

Si tienes algún problema o alguna idea sobre cómo mejorar esto, mis DMs están siempre abiertos. @hoodoer.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *