7.2 KiB
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
Description
Dans une situation où un attaquant peut contrôler l'argument href
d'une balise <a
avec l'attribut target="_blank" rel="opener"
qui va être cliquée par une victime, l'attaquant dirige ce lien vers un site web sous son contrôle (un site malveillant). Ensuite, une fois que la victime clique sur le lien et accède au site de l'attaquant, ce site malveillant pourra contrôler la page originale via l'objet javascript window.opener
.
Si la page n'a pas rel="opener"
mais contient target="_blank"
et n'a pas rel="noopener"
, elle peut également être vulnérable.
Une manière classique d'abuser de ce comportement serait de changer la localisation du web original via window.opener.location = https://attacker.com/victim.html
vers un web contrôlé par l'attaquant qui ressemble à l'original, afin qu'il puisse imiter le formulaire de connexion du site web original et demander des identifiants à l'utilisateur.
Cependant, notez qu'étant donné que l'attaquant peut maintenant contrôler l'objet window du site web original, il peut en abuser de d'autres manières pour effectuer des attaques plus discrètes (peut-être en modifiant des événements javascript pour exfiltrer des informations vers un serveur qu'il contrôle ?)
Overview
With back link
Lien entre les pages parent et enfant lorsque l'attribut de prévention n'est pas utilisé :
Without back link
Lien entre les pages parent et enfant lorsque l'attribut de prévention est utilisé :
Examples
Créez les pages suivantes dans un dossier et exécutez un serveur web avec python3 -m http.server
Ensuite, accédez à http://127.0.0.1:8000/
vulnerable.html, cliquez sur le lien et notez comment l'URL du site original change.
{% code title="vulnerable.html" %}
<!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>
{% endcode %}
{% code title="malicious.html" %}
<html lang="en"> <head> </head> Click me! </html> {% endcode %} ```markup <html> </html> ``` {% endcode %}{% code title="malicious_redir.html" %}
<!DOCTYPE html>
<html>
<body>
<h1>New Malicious Site</h1>
</body>
</html>
{% endcode %}
Propriétés accessibles
Dans le scénario où un accès cross-origin se produit (accès entre différents domaines), les propriétés de l'instance de la classe JavaScript window, référencées par l'objet JavaScript opener, auxquelles un site malveillant peut accéder sont limitées aux suivantes :
opener.closed
: Cette propriété est utilisée pour déterminer si une fenêtre a été fermée, renvoyant une valeur booléenne.opener.frames
: Cette propriété fournit l'accès à tous les éléments iframe dans la fenêtre actuelle.opener.length
: Le nombre d'éléments iframe présents dans la fenêtre actuelle est renvoyé par cette propriété.opener.opener
: Une référence à la fenêtre qui a ouvert la fenêtre actuelle peut être obtenue par cette propriété.opener.parent
: Cette propriété renvoie la fenêtre parente de la fenêtre actuelle.opener.self
: L'accès à la fenêtre actuelle elle-même est fourni par cette propriété.opener.top
: Cette propriété renvoie la fenêtre de navigateur la plus haute.
Cependant, dans les cas où les domaines sont identiques, le site malveillant a accès à toutes les propriétés exposées par la référence d'objet JavaScript window.
Prévention
Les informations de prévention sont documentées dans le HTML5 Cheat Sheet.
Références
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.