BrowExt - XSS Example
Cross-Site Scripting (XSS) via Iframe
Dans cette configuration, un script de contenu est implémenté pour instancier un Iframe, incorporant une URL avec des paramètres de requête comme source de l'Iframe:
Une page HTML publiquement accessible, message.html
, est conçue pour ajouter dynamiquement du contenu au corps du document en fonction des paramètres dans l'URL :
Un script malveillant est exécuté sur la page d'un adversaire, modifiant le paramètre content
de la source de l'Iframe pour introduire une charge utile XSS. Cela est réalisé en mettant à jour la source de l'Iframe pour inclure un script nuisible :
Une politique de sécurité du contenu excessivement permissive telle que :
Permet l'exécution de JavaScript, rendant le système vulnérable aux attaques XSS.
Une approche alternative pour provoquer le XSS consiste à créer un élément Iframe et à définir sa source pour inclure le script malveillant en tant que paramètre content
:
XSS basé sur le DOM + ClickJacking
Cet exemple a été tiré du post original.
Le problème principal découle d'une vulnérabilité de Cross-site Scripting (XSS) basée sur le DOM située dans /html/bookmarks.html
. Le JavaScript problématique, faisant partie de bookmarks.js
, est détaillé ci-dessous:
Ce extrait récupère la valeur du champ de saisie txtName
et utilise la concaténation de chaînes pour générer du HTML, qui est ensuite ajouté au DOM en utilisant la fonction .append()
de jQuery.
Généralement, la Politique de sécurité du contenu (CSP) de l'extension Chrome empêcherait de telles vulnérabilités. Cependant, en raison de la relaxation de la CSP avec ‘unsafe-eval’ et de l'utilisation des méthodes de manipulation du DOM de jQuery (qui utilisent globalEval()
pour transmettre des scripts à eval()
lors de l'insertion dans le DOM), l'exploitation reste possible.
Bien que cette vulnérabilité soit significative, son exploitation dépend généralement de l'interaction de l'utilisateur : visiter la page, saisir une charge utile XSS et activer le bouton “Ajouter”.
Pour renforcer cette vulnérabilité, une deuxième vulnérabilité de clickjacking est exploitée. Le manifeste de l'extension Chrome présente une politique étendue web_accessible_resources
:
Notamment, la page /html/bookmarks.html
est sujette au cadrage, donc vulnérable au clickjacking. Cette vulnérabilité est exploitée pour encadrer la page dans le site d'un attaquant, la superposant avec des éléments DOM pour redessiner l'interface de manière trompeuse. Cette manipulation amène les victimes à interagir involontairement avec l'extension sous-jacente.
Références
Last updated