BrowExt - ClickJacking

Unterstütze HackTricks

Grundinformationen

Diese Seite wird eine ClickJacking-Sicherheitsanfälligkeit in einer Browsererweiterung ausnutzen. Wenn du nicht weißt, was ClickJacking ist, schau dir an:

Clickjacking

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] auf einer Webseite verfügbar, die mit der extension.getURL-Methode generiert werden kann. Erlaubte Ressourcen werden mit geeigneten 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. Unwissende Benutzer, die diese Seite besuchen, könnten versehentlich 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 in folgender Weise deklariert wurde (Überprüfe 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 unbeabsichtigt 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 das Risiko effektiv, indem sichergestellt wurde, dass der Inhalt des Verzeichnisses skin/ nicht über webzugängliche Ressourcen aufgerufen oder manipuliert werden konnte.

Die Lösung war einfach: entferne /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 zum Zugriff verwendet wird, https: oder http: (nicht chrome: zum Beispiel) ist:

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:

BrowExt - XSS Example

Referenzen

HackTricks unterstützen

Last updated