BrowExt - ClickJacking
Reading time: 5 minutes
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
Grundinformationen
Diese Seite wird eine ClickJacking-Sicherheitsanfälligkeit in einer Browsererweiterung ausnutzen.
Wenn Sie nicht wissen, was ClickJacking ist, schauen Sie sich an:
Erweiterungen enthalten die Datei manifest.json
und diese JSON-Datei hat ein Feld web_accessible_resources
. Hier ist, was die Chrome-Dokumentation darüber sagt:
Diese Ressourcen wären dann über die URL
chrome-extension://[PACKAGE ID]/[PATH]
in einer Webseite verfügbar, die mit derextension.getURL method
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 funktionieren auch mit den inhärenten Berechtigungen der Erweiterung. Das bedeutet, dass sie die Fähigkeit haben, zu:
- Den Zustand der Erweiterung zu ändern
- Zusätzliche Ressourcen zu laden
- In gewissem Maße mit dem Browser zu interagieren
Diese Funktion stellt jedoch ein Sicherheitsrisiko dar. 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. Unverdächtige Benutzer, die diese Seite besuchen, könnten unbeabsichtigt diese eingebettete Ressource aktivieren. Eine solche Aktivierung könnte je nach Berechtigungen und Fähigkeiten der Ressourcen der Erweiterung zu unbeabsichtigten Konsequenzen führen.
PrivacyBadger Beispiel
In der Erweiterung PrivacyBadger wurde eine Sicherheitsanfälligkeit identifiziert, die sich auf das Verzeichnis skin/
bezieht, das als web_accessible_resources
auf folgende Weise deklariert wurde (Überprüfen Sie den ursprünglichen Blogbeitrag):
"web_accessible_resources": [
"skin/*",
"icons/*"
]
Diese Konfiguration führte zu einem potenziellen Sicherheitsproblem. Insbesondere könnte die Datei skin/popup.html
, die bei Interaktion mit dem PrivacyBadger-Symbol im Browser gerendert wird, innerhalb eines iframe
eingebettet werden. Diese Einbettung könnte ausgenutzt werden, um Benutzer zu täuschen, sodass sie versehentlich auf "Disable PrivacyBadger for this Website" klicken. Eine solche Aktion würde die Privatsphäre des Benutzers gefährden, indem der Schutz von PrivacyBadger deaktiviert wird und der Benutzer möglicherweise einer erhöhten Verfolgung ausgesetzt wird. 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 minderte effektiv das Risiko, indem sichergestellt wurde, dass der Inhalt des Verzeichnisses skin/
nicht über webzugängliche Ressourcen zugegriffen oder manipuliert werden konnte.
Die Lösung 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 Blogbeitrag über ClickJacking in Metamask ist hier zu finden. In diesem Fall hat Metamask die Schwachstelle behoben, indem überprüft wurde, dass das Protokoll, das zugegriffen wurde, https:
oder http:
(nicht chrome:
zum Beispiel) war:
Ein weiteres ClickJacking, das in der Metamask-Erweiterung behoben wurde, war, dass Benutzer Klicken, um auf die Whitelist zu setzen konnten, wenn eine Seite verdächtig war, Phishing 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 zeigte, um das Opfer dazu zu bringen, es ohne Notice auf die Whitelist zu setzen, und dann zurück zur Phishing-Seite zu gehen, die dann auf die Whitelist gesetzt wird.
Steam Inventory Helper Beispiel
Überprüfen Sie die folgende Seite, um zu sehen, wie ein XSS in einer Browsererweiterung mit einer ClickJacking-Schwachstelle verknüpft wurde:
Referenzen
- https://blog.lizzie.io/clickjacking-privacy-badger.html
- https://slowmist.medium.com/metamask-clickjacking-vulnerability-analysis-f3e7c22ff4d9
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.