Clickjacking
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Use Trickest to easily build and automate workflows powered by the world's most advanced community tools. Get Access Today:
En un ataque de clickjacking, un usuario es engañado para hacer clic en un elemento en una página web que es invisible o disfrazado como otro elemento. Esta manipulación puede llevar a consecuencias no deseadas para el usuario, como la descarga de malware, redirección a páginas web maliciosas, provisión de credenciales o información sensible, transferencias de dinero, o la compra en línea de productos.
A veces es posible llenar el valor de los campos de un formulario usando parámetros GET al cargar una página. Un atacante puede abusar de este comportamiento para llenar un formulario con datos arbitrarios y enviar la carga útil de clickjacking para que el usuario presione el botón Enviar.
Si necesitas que el usuario llene un formulario pero no quieres pedirle directamente que escriba información específica (como el correo electrónico o una contraseña específica que conoces), puedes simplemente pedirle que Drag&Drop algo que escriba tus datos controlados como en este ejemplo.
Si has identificado un ataque XSS que requiere que un usuario haga clic en algún elemento para activar el XSS y la página es vulnerable a clickjacking, podrías abusar de ello para engañar al usuario para que haga clic en el botón/enlace. Ejemplo: &#xNAN;You encontraste un self XSS en algunos detalles privados de la cuenta (detalles que solo tú puedes establecer y leer). La página con el formulario para establecer estos detalles es vulnerable a Clickjacking y puedes prellenar el formulario con los parámetros GET. __Un atacante podría preparar un ataque de Clickjacking a esa página prellenando el formulario con la carga útil de XSS y engañando al usuario para que envíe el formulario. Así, cuando se envíe el formulario y los valores sean modificados, el usuario ejecutará el XSS.
Los scripts ejecutados en el lado del cliente pueden realizar acciones para prevenir el Clickjacking:
Asegurarse de que la ventana de la aplicación sea la ventana principal o superior.
Hacer que todos los marcos sean visibles.
Prevenir clics en marcos invisibles.
Detectar y alertar a los usuarios sobre posibles intentos de Clickjacking.
Sin embargo, estos scripts de ruptura de marcos pueden ser eludidos:
Configuraciones de Seguridad de los Navegadores: Algunos navegadores podrían bloquear estos scripts basándose en sus configuraciones de seguridad o falta de soporte para JavaScript.
Atributo sandbox
de HTML5 iframe: Un atacante puede neutralizar los scripts de ruptura de marcos estableciendo el atributo sandbox
con valores allow-forms
o allow-scripts
sin allow-top-navigation
. Esto impide que el iframe verifique si es la ventana superior, e.g.,
Los valores allow-forms
y allow-scripts
habilitan acciones dentro del iframe mientras deshabilitan la navegación de nivel superior. Para asegurar la funcionalidad deseada del sitio objetivo, pueden ser necesarios permisos adicionales como allow-same-origin
y allow-modals
, dependiendo del tipo de ataque. Los mensajes de la consola del navegador pueden guiar sobre qué permisos permitir.
El encabezado de respuesta HTTP X-Frame-Options
informa a los navegadores sobre la legitimidad de renderizar una página en un <frame>
o <iframe>
, ayudando a prevenir Clickjacking:
X-Frame-Options: deny
- Ningún dominio puede enmarcar el contenido.
X-Frame-Options: sameorigin
- Solo el sitio actual puede enmarcar el contenido.
X-Frame-Options: allow-from https://trusted.com
- Solo el 'uri' especificado puede enmarcar la página.
Tenga en cuenta las limitaciones: si el navegador no admite esta directiva, puede que no funcione. Algunos navegadores prefieren la directiva CSP frame-ancestors.
La directiva frame-ancestors
en CSP es el método recomendado para la protección contra Clickjacking:
frame-ancestors 'none'
- Similar a X-Frame-Options: deny
.
frame-ancestors 'self'
- Similar a X-Frame-Options: sameorigin
.
frame-ancestors trusted.com
- Similar a X-Frame-Options: allow-from
.
Por ejemplo, el siguiente CSP solo permite el enmarcado desde el mismo dominio:
Content-Security-Policy: frame-ancestors 'self';
Más detalles y ejemplos complejos se pueden encontrar en la documentación de frame-ancestors CSP y en la documentación de frame-ancestors de Mozilla.
child-src
y frame-src
La Content Security Policy (CSP) es una medida de seguridad que ayuda a prevenir Clickjacking y otros ataques de inyección de código al especificar qué fuentes el navegador debe permitir para cargar contenido.
frame-src
Define fuentes válidas para frames.
Más específica que la directiva default-src
.
Esta política permite marcos del mismo origen (self) y https://trusted-website.com.
child-src
Introducida en CSP nivel 2 para establecer fuentes válidas para trabajadores web y marcos.
Actúa como un respaldo para frame-src y worker-src.
Esta política permite marcos y trabajadores del mismo origen (self) y https://trusted-website.com.
Notas de Uso:
Deprecación: child-src está siendo eliminado a favor de frame-src y worker-src.
Comportamiento de Respaldo: Si frame-src está ausente, se utiliza child-src como respaldo para marcos. Si ambos están ausentes, se utiliza default-src.
Definición Estricta de Fuentes: Incluya solo fuentes confiables en las directivas para prevenir la explotación.
Aunque no son completamente infalibles, los scripts de ruptura de marcos basados en JavaScript se pueden utilizar para evitar que una página web sea enmarcada. Ejemplo:
Validación de Tokens: Utiliza tokens anti-CSRF en aplicaciones web para asegurar que las solicitudes que cambian el estado sean realizadas intencionalmente por el usuario y no a través de una página Clickjacked.
Utiliza Trickest para construir y automatizar flujos de trabajo fácilmente, impulsados por las herramientas comunitarias más avanzadas del mundo. Accede hoy:
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)