BrowExt - XSS Example
Cross-Site Scripting (XSS) a través de Iframe
En esta configuración, se implementa un script de contenido para instanciar un Iframe, incorporando una URL con parámetros de consulta como la fuente del Iframe:
Una página HTML accesible públicamente, message.html
, está diseñada para agregar dinámicamente contenido al cuerpo del documento según los parámetros en la URL:
Un script malicioso se ejecuta en la página de un adversario, modificando el parámetro content
de la fuente del Iframe para introducir una carga útil XSS. Esto se logra actualizando la fuente del Iframe para incluir un script dañino:
Una Política de Seguridad de Contenido demasiado permisiva como:
permite la ejecución de JavaScript, haciendo que el sistema sea vulnerable a ataques XSS.
Un enfoque alternativo para provocar el XSS implica crear un elemento Iframe y establecer su fuente para incluir el script dañino como el parámetro content
:
DOM-based XSS + ClickJacking
Este ejemplo fue tomado de la publicación original.
El problema principal surge de una vulnerabilidad de Cross-site Scripting (XSS) basada en DOM ubicada en /html/bookmarks.html
. El JavaScript problemático, parte de bookmarks.js
, se detalla a continuación:
Este fragmento obtiene el valor del campo de entrada txtName
y utiliza concatenación de cadenas para generar HTML, que luego se agrega al DOM utilizando la función .append()
de jQuery.
Normalmente, la Política de Seguridad de Contenidos (CSP) de la extensión de Chrome evitaría tales vulnerabilidades. Sin embargo, debido a la relajación de CSP con ‘unsafe-eval’ y el uso de los métodos de manipulación del DOM de jQuery (que emplean globalEval()
para pasar scripts a eval()
al insertar en el DOM), la explotación sigue siendo posible.
Si bien esta vulnerabilidad es significativa, su explotación generalmente depende de la interacción del usuario: visitar la página, ingresar una carga útil de XSS y activar el botón “Agregar”.
Para mejorar esta vulnerabilidad, se explota una vulnerabilidad secundaria de clickjacking. El manifiesto de la extensión de Chrome muestra una política extensa de web_accessible_resources
:
Notablemente, la página /html/bookmarks.html
es susceptible a framing, por lo tanto vulnerable a clickjacking. Esta vulnerabilidad se aprovecha para enmarcar la página dentro del sitio de un atacante, superponiéndola con elementos DOM para rediseñar la interfaz de manera engañosa. Esta manipulación lleva a las víctimas a interactuar con la extensión subyacente de manera involuntaria.
Referencias
Last updated