BrowExt - XSS Example
Cross-Site Scripting (XSS) über Iframe
In diesem Setup wird ein Content-Skript implementiert, um ein Iframe zu instanziieren, das eine URL mit Abfrageparametern als Quelle des Iframe enthält:
Eine öffentlich zugängliche HTML-Seite, message.html
, ist so konzipiert, dass sie basierend auf den Parametern in der URL dynamisch Inhalte zum Dokument hinzufügt:
Ein bösartiges Skript wird auf einer Seite des Angreifers ausgeführt, indem der content
-Parameter der Quelle des Iframes geändert wird, um eine XSS-Payload einzuführen. Dies wird erreicht, indem die Quelle des Iframes aktualisiert wird, um ein schädliches Skript einzuschließen:
Eine übermäßig großzügige Content Security Policy wie:
ermöglicht die Ausführung von JavaScript und macht das System anfällig für XSS-Angriffe.
Ein alternativer Ansatz, um XSS zu provozieren, besteht darin, ein Iframe-Element zu erstellen und seine Quelle so zu setzen, dass das schädliche Skript als content
-Parameter enthalten ist:
DOM-basierte XSS + ClickJacking
Dieses Beispiel wurde aus dem ursprünglichen Beitrag entnommen.
Das Hauptproblem entsteht durch eine DOM-basierte Cross-Site Scripting (XSS)-Schwachstelle in /html/bookmarks.html
. Der problematische JavaScript-Code, der Teil von bookmarks.js
ist, wird unten detailliert beschrieben:
Dieser Codeausschnitt ruft den Wert aus dem Eingabefeld txtName
ab und verwendet Zeichenkettenverkettung, um HTML zu generieren, das dann mithilfe der .append()
-Funktion von jQuery dem DOM hinzugefügt wird.
Normalerweise würde die Content Security Policy (CSP) der Chrome-Erweiterung solche Sicherheitslücken verhindern. Aufgrund der CSP-Entspannung mit 'unsafe-eval' und der Verwendung von jQuery's DOM-Manipulationsmethoden (die globalEval()
verwenden, um Skripte an eval()
bei DOM-Einfügung zu übergeben), ist eine Ausnutzung jedoch immer noch möglich.
Obwohl diese Sicherheitslücke erheblich ist, hängt ihre Ausnutzung normalerweise von der Benutzerinteraktion ab: Besuch der Seite, Eingabe einer XSS-Payload und Aktivierung der Schaltfläche "Hinzufügen".
Um diese Sicherheitslücke zu verbessern, wird eine sekundäre Clickjacking-Sicherheitslücke ausgenutzt. Das Manifest der Chrome-Erweiterung zeigt eine umfangreiche web_accessible_resources
-Richtlinie:
Besonders die Seite /html/bookmarks.html
ist anfällig für Framing und somit anfällig für Clickjacking. Diese Schwachstelle wird ausgenutzt, um die Seite innerhalb einer Angreifer-Website zu rahmen und sie mit DOM-Elementen zu überlagern, um die Benutzeroberfläche täuschend zu gestalten. Diese Manipulation führt dazu, dass Opfer unbeabsichtigt mit der zugrunde liegenden Erweiterung interagieren.
Referenzen
Last updated