hacktricks/pentesting-web/browser-extension-pentesting-methodology/browext-clickjacking.md

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:

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 Methode extension.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

Erfahren Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen: