8.9 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.
Περιγραφή
Σε μια κατάσταση όπου ένας επιτιθέμενος μπορεί να ελέγξει το href
επιχείρημα μιας <a
ετικέτας με το χαρακτηριστικό target="_blank" rel="opener"
που πρόκειται να κλικάρει ένα θύμα, ο επιτιθέμενος δείχνει αυτό το σύνδεσμο σε μια ιστοσελίδα υπό τον έλεγχό του (μια κακόβουλη ιστοσελίδα). Στη συνέχεια, μόλις το θύμα κλικάρει το σύνδεσμο και αποκτήσει πρόσβαση στην ιστοσελίδα του επιτιθέμενου, αυτή η κακόβουλη ιστοσελίδα θα είναι σε θέση να ελέγξει την αρχική σελίδα μέσω του αντικειμένου javascript window.opener
.
Εάν η σελίδα δεν έχει rel="opener"
αλλά περιέχει target="_blank"
και δεν έχει rel="noopener"
μπορεί επίσης να είναι ευάλωτη.
Ένας κανονικός τρόπος για να εκμεταλλευτεί κανείς αυτή τη συμπεριφορά θα ήταν να αλλάξει την τοποθεσία της αρχικής ιστοσελίδας μέσω window.opener.location = https://attacker.com/victim.html
σε μια ιστοσελίδα που ελέγχεται από τον επιτιθέμενο και φαίνεται σαν την αρχική, έτσι ώστε να μπορεί να μιμηθεί τη φόρμα σύνδεσης της αρχικής ιστοσελίδας και να ζητήσει διαπιστευτήρια από τον χρήστη.
Ωστόσο, σημειώστε ότι καθώς ο επιτιθέμενος μπορεί τώρα να ελέγξει το αντικείμενο παραθύρου της αρχικής ιστοσελίδας μπορεί να το εκμεταλλευτεί με άλλους τρόπους για να εκτελέσει πιο διακριτικές επιθέσεις (ίσως τροποποιώντας γεγονότα javascript για να εξάγει πληροφορίες σε έναν διακομιστή που ελέγχει;)
Επισκόπηση
Με σύνδεσμο επιστροφής
Σύνδεσμος μεταξύ γονικών και παιδικών σελίδων όταν δεν χρησιμοποιείται το χαρακτηριστικό πρόληψης:
Χωρίς σύνδεσμο επιστροφής
Σύνδεσμος μεταξύ γονικών και παιδικών σελίδων όταν χρησιμοποιείται το χαρακτηριστικό πρόληψης:
Παραδείγματα
Δημιουργήστε τις παρακάτω σελίδες σε έναν φάκελο και εκτελέστε έναν διακομιστή ιστού με python3 -m http.server
Στη συνέχεια, πρόσβαση http://127.0.0.1:8000/
vulnerable.html, κλικάρετε το σύνδεσμο και σημειώστε πώς η αρχική ιστοσελίδα URL αλλάζει.
{% 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" %}
<!DOCTYPE html>
<html>
<body>
<script>
window.opener.location = "http://127.0.0.1:8000/malicious_redir.html";
</script>
</body>
</html>
{% endcode %}
{% code title="malicious_redir.html" %}
<!DOCTYPE html>
<html>
<body>
<h1>New Malicious Site</h1>
</body>
</html>
{% endcode %}
Προσιτές ιδιότητες
Στο σενάριο όπου συμβαίνει cross-origin πρόσβαση (πρόσβαση σε διαφορετικά domains), οι ιδιότητες της κλάσης JavaScript window, που αναφέρονται από την αναφορά αντικειμένου JavaScript opener, που μπορούν να προσπελαστούν από έναν κακόβουλο ιστότοπο περιορίζονται στα εξής:
opener.closed
: Αυτή η ιδιότητα προσπελάζεται για να προσδιορίσει αν ένα παράθυρο έχει κλείσει, επιστρέφοντας μια boolean τιμή.opener.frames
: Αυτή η ιδιότητα παρέχει πρόσβαση σε όλα τα στοιχεία iframe εντός του τρέχοντος παραθύρου.opener.length
: Ο αριθμός των στοιχείων iframe που υπάρχουν στο τρέχον παράθυρο επιστρέφεται από αυτή την ιδιότητα.opener.opener
: Μια αναφορά στο παράθυρο που άνοιξε το τρέχον παράθυρο μπορεί να αποκτηθεί μέσω αυτής της ιδιότητας.opener.parent
: Αυτή η ιδιότητα επιστρέφει το γονικό παράθυρο του τρέχοντος παραθύρου.opener.self
: Πρόσβαση στο τρέχον παράθυρο παρέχεται από αυτή την ιδιότητα.opener.top
: Αυτή η ιδιότητα επιστρέφει το ανώτατο παράθυρο του προγράμματος περιήγησης.
Ωστόσο, σε περιπτώσεις όπου τα domains είναι ταυτόσημα, ο κακόβουλος ιστότοπος αποκτά πρόσβαση σε όλες τις ιδιότητες που εκτίθενται από την αναφορά αντικειμένου JavaScript window.
Πρόληψη
Οι πληροφορίες πρόληψης τεκμηριώνονται στο HTML5 Cheat Sheet.
Αναφορές
{% 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.