tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και 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 της αρχικής ιστοσελίδας αλλάζει.
<!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>
Accessible properties
Στο σενάριο όπου συμβαίνει 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 είναι ταυτόσημα, ο κακόβουλος ιστότοπος αποκτά πρόσβαση σε όλες τις ιδιότητες που εκτίθενται από την αναφορά αντικειμένου window JavaScript.
Prevention
Οι πληροφορίες πρόληψης τεκμηριώνονται στο HTML5 Cheat Sheet.
References
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.