Reverse Tab Nabbing
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 einer Situation, in der ein Angreifer das href
-Argument eines <a
-Tags mit dem Attribut target="_blank" rel="opener"
kontrollieren kann, das von einem Opfer angeklickt wird, kann der Angreifer diesen Link auf eine von ihm kontrollierte Website (eine bösartige Website) verweisen. Sobald das Opfer auf den Link klickt und die Website des Angreifers aufruft, kann diese bösartige Website die ursprüngliche Seite über das JavaScript-Objekt window.opener
kontrollieren.
Wenn die Seite **rel="opener"
nicht hat, aber target="_blank"
enthält und auch kein rel="noopener"
hat, könnte sie ebenfalls anfällig sein.
Eine gängige Methode, dieses Verhalten auszunutzen, wäre, die Position der ursprünglichen Website über window.opener.location = https://attacker.com/victim.html
auf eine vom Angreifer kontrollierte Website zu ändern, die wie die ursprüngliche aussieht, sodass sie das Anmeldeformular der ursprünglichen Website imitieren und den Benutzer nach Anmeldeinformationen fragen kann.
Beachten Sie jedoch, dass der Angreifer nun das Fensterobjekt der ursprünglichen Website kontrollieren kann und es auf andere Weise ausnutzen kann, um versteckte Angriffe durchzuführen (vielleicht JavaScript-Ereignisse zu ändern, um Informationen an einen von ihm kontrollierten Server zu exfiltrieren?)
Link zwischen Eltern- und Kindseiten, wenn das Präventionsattribut nicht verwendet wird:
Link zwischen Eltern- und Kindseiten, wenn das Präventionsattribut verwendet wird:
Erstellen Sie die folgenden Seiten in einem Ordner und führen Sie einen Webserver mit python3 -m http.server
aus.
Zugreifen auf http://127.0.0.1:8000/
vulnerable.html, klicken Sie auf den Link und beachten Sie, wie sich die URL der ursprünglichen Website ändert.
In dem Szenario, in dem ein cross-origin Zugriff erfolgt (Zugriff über verschiedene Domains), sind die Eigenschaften der window JavaScript-Klasseninstanz, auf die durch die opener JavaScript-Objektreferenz zugegriffen wird, die von einer böswilligen Seite zugänglich sind, auf die folgenden beschränkt:
opener.closed
: Diese Eigenschaft wird verwendet, um festzustellen, ob ein Fenster geschlossen wurde, und gibt einen booleschen Wert zurück.
opener.frames
: Diese Eigenschaft bietet Zugriff auf alle iframe-Elemente im aktuellen Fenster.
opener.length
: Die Anzahl der im aktuellen Fenster vorhandenen iframe-Elemente wird durch diese Eigenschaft zurückgegeben.
opener.opener
: Eine Referenz auf das Fenster, das das aktuelle Fenster geöffnet hat, kann durch diese Eigenschaft erhalten werden.
opener.parent
: Diese Eigenschaft gibt das übergeordnete Fenster des aktuellen Fensters zurück.
opener.self
: Zugriff auf das aktuelle Fenster selbst wird durch diese Eigenschaft bereitgestellt.
opener.top
: Diese Eigenschaft gibt das oberste Browserfenster zurück.
In Fällen, in denen die Domains identisch sind, erhält die böswillige Seite jedoch Zugriff auf alle Eigenschaften, die durch die window JavaScript-Objektreferenz exponiert werden.
Präventionsinformationen sind im HTML5 Cheat Sheet dokumentiert.
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)