El clickjacking es un ataque que engaña al usuario para que haga clic en un elemento de la página web que es invisible o está disfrazado de otro elemento. Esto puede hacer que los usuarios descarguen involuntariamente malware, visiten páginas web maliciosas, proporcionen credenciales o información sensible, transfieran dinero o compren productos en línea.
Requerimientos:
- Dominio – Un dominio para realizar las pruebas
- Programación – Conocimientos altos de programación
Resposabilidad:
En este tutorías utilizaremos técnicas de hacking, con el único fin de aprendizaje. No promovemos su utilización ni con fines lucrativos o incorrectos. No nos hacemos responsables de cualquier daño o menoscabo que pueda generar en los sistemas utilizados. La responsabilidad es absoluta del usuario de este tutorial.
Conocimientos:
- Linux – Alto
- Programación – Alto
- Kali Linux – Alto
- Windows – No aplica
- Redes – Bajo
Nivel general del Tutorial: Alto
Ideal para: Ingenieros de redes, Ingenieros de seguridad, Pentesters
¿Qué es el clickjacking?
Normalmente, el clickjacking se realiza mostrando una página invisible o un elemento HTML, dentro de un iframe, encima de la página que ve el usuario. El usuario cree que está haciendo clic en la página visible, pero en realidad está haciendo clic en un elemento invisible en la página adicional transpuesta encima de ella.
La página invisible puede ser una página maliciosa o una página legítima que el usuario no tenía intención de visitar, por ejemplo, una página del sitio bancario del usuario que autoriza la transferencia de dinero.
Existen diversas variantes del ataque clickjacking, como por ejemplo:
- Likejacking – técnica en la que se manipula el botón «Me gusta» de Facebook, haciendo que los usuarios le den «me gusta» a una página que en realidad no tenían intención de que les gustara.
- Cursorjacking – una técnica de redireccionamiento de la interfaz de usuario que cambia el cursor de la posición que el usuario percibe a otra posición. El Cursorjacking se basa en vulnerabilidades de Flash y del navegador Firefox, que ya han sido corregidas.
Ejemplo de ataque de clickjacking
- El atacante crea una página atractiva que promete regalar al usuario un viaje a Tahití.
- En segundo plano, el atacante comprueba si el usuario ha iniciado sesión en su sitio bancario y, si es así, carga la pantalla que permite la transferencia de fondos, utilizando parámetros de consulta para insertar los datos bancarios del atacante en el formulario.
- La página de transferencia bancaria se muestra en un iframe invisible sobre la página de regalos gratuitos, con el botón «Confirmar transferencia» exactamente alineado sobre el botón «Recibir regalo» visible para el usuario.
- El usuario visita la página y hace clic en el botón «Reservar mi viaje gratis».
- En realidad, el usuario está haciendo clic en el iframe invisible, y ha hecho clic en el botón «Confirmar transferencia». Los fondos se transfieren al atacante.
- El usuario es redirigido a una página con información sobre el regalo gratuito (sin saber lo que ha ocurrido en el fondo).
Este ejemplo ilustra que, en un ataque de clickjacking, la acción maliciosa (en el sitio web del banco, en este caso) no puede ser rastreada hasta el atacante porque el usuario la realizó mientras estaba legítimamente conectado a su propia cuenta.
Mitigación del clickjacking
Hay dos formas generales de defenderse del clickjacking:
- Métodos del lado del cliente – el más común se llama Frame Busting. Los métodos del lado del cliente pueden ser efectivos en algunos casos, pero no se consideran la mejor práctica, porque pueden ser fácilmente evitados.
- Métodos del lado del servidor – el más común es X-Frame-Options. Los métodos del lado del servidor son recomendados por los expertos en seguridad como una forma efectiva de defenderse contra el clickjacking.
Mitigación del clickjacking con la cabecera de respuesta X-Frame-Options
La cabecera de respuesta X-Frame-Options se pasa como parte de la respuesta HTTP de una página web, indicando si se debe permitir a un navegador renderizar una página dentro de una etiqueta <FRAME> o <IFRAME>.
Hay tres valores permitidos para la cabecera X-Frame-Options:
- DENY – no permite que ningún dominio muestre esta página dentro de un marco
- SAMEORIGIN – permite que la página actual se muestre en un marco de otra página, pero sólo dentro del dominio actual
- ALLOW-FROM URI – permite que la página actual se muestre en un marco, pero sólo en un URI específico – por ejemplo www.example.com/frame-page
Uso de la opción SAMEORIGIN para defenderse del clickjacking
X-Frame-Options permite a los editores de contenidos evitar que sus propios contenidos sean utilizados en un marco invisible por los atacantes.
La opción DENY es la más segura, ya que impide cualquier uso de la página actual en un marco. Más comúnmente, se utiliza SAMEORIGIN, ya que permite el uso de marcos, pero los limita al dominio actual.
Limitaciones de X-Frame-Options
- Para activar la opción SAMEORIGIN en un sitio web, es necesario devolver el encabezado X-Frame-Options como parte de la respuesta HTTP para cada página individual (no puede aplicarse entre sitios).
- X-Frame-Options no admite una lista blanca de dominios permitidos, por lo que no funciona con sitios multidominio que necesiten mostrar contenido enmarcado entre ellos.
- Sólo se puede utilizar una opción en una misma página, por lo que, por ejemplo, no es posible que la misma página se muestre como marco tanto en el sitio web actual como en un sitio externo.
- La opción ALLOW-FROM no es compatible con todos los navegadores.
- X-Frame-Options es una opción obsoleta en la mayoría de los navegadores.
Prueba de clickjacking – ¿Es su sitio vulnerable?
A basic way to test if your site is vulnerable to clickjacking is to create an HTML page and attempt to include a sensitive page from your website in an iframe. It is important to execute the test code on another web server, because this is the typical behavior in a clickjacking attack.
Use code like the following, provided as part of the OWASP Testing Guide:
<html> <head> <title>Clickjack test page</title> </head> <body> <p>Website is vulnerable to clickjacking!</p> <iframe src="http://www.yoursite.com/sensitive-page" width="500" height="500"></iframe> </body> </html>
Vea la página HTML en un navegador y evalúe la página como sigue:
- Si aparece el texto «Website is vulnerable to clickjacking» y debajo se ve el contenido de su página sensible, la página es vulnerable al clickjacking.
- Si sólo aparece el texto «Website is vulnerable to clickjacking», y no se ve el contenido de su página sensible, la página no es vulnerable a la forma más simple de clickjacking.
Sin embargo, es necesario realizar pruebas adicionales para ver qué métodos de anti-clickjacking se utilizan en la página, y si pueden ser eludidos por los atacantes.
Espero que les haya gustado el post y les sirva de ayuda.