BrowExt - XSS Example
Last updated
Last updated
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
In diesem Setup wird ein Inhalts-Skript implementiert, um ein Iframe zu instanziieren, das eine URL mit Abfrageparametern als Quelle des Iframes einfügt:
Eine öffentlich zugängliche HTML-Seite, message.html
, ist so konzipiert, dass sie Inhalte dynamisch zum Dokumenteninhalt basierend auf den Parametern in der URL hinzufügt:
Ein bösartiges Skript wird auf der Seite eines Angreifers ausgeführt, das den content
-Parameter der Iframe-Quelle ändert, um eine XSS-Payload einzuführen. Dies wird erreicht, indem die Quelle des Iframes aktualisiert wird, um ein schädliches Skript einzufügen:
Eine zu permissive Content Security Policy wie:
erlaubt die Ausführung von JavaScript, wodurch das System anfällig für XSS-Angriffe wird.
Ein alternativer Ansatz, um das XSS auszulösen, besteht darin, ein Iframe-Element zu erstellen und dessen Quelle so einzustellen, dass das schädliche Skript als content
-Parameter enthalten ist:
Dieses Beispiel stammt aus dem ursprünglichen Beitrag.
Das Kernproblem ergibt sich aus einer DOM-basierten Cross-site Scripting (XSS) Schwachstelle, die sich in /html/bookmarks.html
befindet. Das problematische JavaScript, Teil von bookmarks.js
, ist unten aufgeführt:
Dieses Snippet ruft den Wert aus dem txtName
Eingabefeld ab und verwendet String-Verkettung zur Generierung von HTML, das dann mit jQuerys .append()
-Funktion an das DOM angehängt wird.
Typischerweise würde die Content Security Policy (CSP) der Chrome-Erweiterung solche Schwachstellen verhindern. Aufgrund der CSP-Entspannung mit ‘unsafe-eval’ und der Verwendung von jQuerys DOM-Manipulationsmethoden (die globalEval()
verwenden, um Skripte an eval()
bei der DOM-Einfügung zu übergeben), ist eine Ausnutzung jedoch weiterhin möglich.
Obwohl diese Schwachstelle erheblich ist, hängt ihre Ausnutzung normalerweise von der Interaktion des Benutzers ab: die Seite besuchen, eine XSS-Nutzlast eingeben und die Schaltfläche „Hinzufügen“ aktivieren.
Um diese Schwachstelle zu verstärken, wird eine sekundäre Clickjacking-Schwachstelle ausgenutzt. Das Manifest der Chrome-Erweiterung zeigt eine umfangreiche web_accessible_resources
-Richtlinie:
Bemerkenswert ist, dass die /html/bookmarks.html
-Seite anfällig für Framing ist und somit verwundbar für clickjacking. Diese Schwachstelle wird ausgenutzt, um die Seite innerhalb der Website eines Angreifers einzurahmen und sie mit DOM-Elementen zu überlagern, um die Benutzeroberfläche täuschend umzugestalten. Diese Manipulation führt dazu, dass die Opfer unbeabsichtigt mit der zugrunde liegenden Erweiterung interagieren.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)