hacktricks/pentesting-web/reverse-tab-nabbing.md

114 lines
9.8 KiB
Markdown
Raw Normal View History

2022-04-28 16:01:33 +00:00
<details>
2024-02-10 22:40:18 +00:00
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-10 22:40:18 +00:00
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
2022-04-28 16:01:33 +00:00
2024-02-10 22:40:18 +00:00
* Εάν θέλετε να δείτε την **εταιρεία σας να διαφημίζεται στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**την Οικογένεια PEASS**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Εγγραφείτε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στη [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
2022-04-28 16:01:33 +00:00
</details>
2024-02-10 22:40:18 +00:00
# Περιγραφή
2021-05-01 15:23:19 +00:00
2024-02-10 22:40:18 +00:00
Σε μια κατάσταση όπου ένας **επιτιθέμενος** μπορεί να **ελέγχει** το **`href`** όρισμα ενός **`<a`** tag με το χαρακτηριστικό **`target="_blank" rel="opener"`** που θα κάνει κλικ ένα θύμα, ο **επιτιθέμενος** μπορεί να **κατευθύνει** αυτό το **σύνδεσμο** σε μια ιστοσελίδα υπό τον έλεγχό του (μια **κακόβουλη** **ιστοσελίδα**). Έπειτα, όταν το θύμα κάνει κλικ στον σύνδεσμο και αποκτά πρόσβαση στην ιστοσελίδα του επιτιθέμενου, αυτή η **κακόβουλη** **ιστοσελίδα** θα μπορεί να **ελέγχει** την **αρχική** **σελίδα** μέσω του αντικειμένου javascript **`window.opener`**.\
Εάν η σελίδα δεν έχει **`rel="opener"` αλλά περιέχει `target="_blank"` και δεν έχει `rel="noopener"`** μπορεί επίσης να είναι ευάλωτη.
2021-05-01 15:23:19 +00:00
2024-02-10 22:40:18 +00:00
Ένας συνηθισμένος τρόπος εκμετάλλευσης αυτής της συμπεριφοράς θα ήταν να **αλλάξει την τοποθεσία της αρχικής ιστοσελίδας** μέσω της εντολής `window.opener.location = https://attacker.com/victim.html` σε μια ιστοσελίδα που ελέγχεται από τον επιτιθέμενο και **μοιάζει με την αρχική**, έτσι ώστε να **μιμηθεί** τη **φόρμα σύνδεσης** της αρχικής ιστοσελίδας και να ζητήσει διαπιστευτήρια από τον χρήστη.
2021-05-01 15:23:19 +00:00
2024-02-10 22:40:18 +00:00
Ωστόσο, να σημειωθεί ότι καθώς ο **επιτιθέμενος μπορεί τώρα να ελέγχει το αντικείμενο παράθυρο της αρχικής ιστοσελίδας**, μπορεί να το εκμεταλλευτεί και με άλλους τρόπους για να πραγματοποιήσει **πιο αόρατες επιθέσεις** (ίσως τροποποιώντας γεγονότα javascript για να εξαγάγει πληροφορίες σε έναν διακομιστή που ελέγχεται από αυτόν;)
2021-05-01 15:23:19 +00:00
2024-02-10 22:40:18 +00:00
# Επισκόπηση
2021-05-01 15:23:19 +00:00
2024-02-10 22:40:18 +00:00
## Με αναφορά πίσω
2021-05-01 15:23:19 +00:00
2024-02-10 22:40:18 +00:00
Σύνδεση μεταξύ γονικής και παιδικής σελίδας όταν δεν χρησιμοποιείται το πρόθεμα πρόληψης:
2021-05-01 15:23:19 +00:00
2024-02-06 03:10:38 +00:00
![https://owasp.org/www-community/assets/images/TABNABBING_OVERVIEW_WITH_LINK.png](https://owasp.org/www-community/assets/images/TABNABBING\_OVERVIEW\_WITH\_LINK.png)
2021-05-01 15:23:19 +00:00
2024-02-10 22:40:18 +00:00
## Χωρίς αναφορά πίσω
2021-05-01 15:23:19 +00:00
2024-02-10 22:40:18 +00:00
Σύνδεση μεταξύ γονικής και παιδικής σελίδας όταν χρησιμοποιείται το πρόθεμα πρόληψης:
2021-05-01 15:23:19 +00:00
2024-02-06 03:10:38 +00:00
![https://owasp.org/www-community/assets/images/TABNABBING_OVERVIEW_WITHOUT_LINK.png](https://owasp.org/www-community/assets/images/TABNABBING\_OVERVIEW\_WITHOUT\_LINK.png)
2021-05-01 15:23:19 +00:00
2024-02-10 22:40:18 +00:00
## Παραδείγματα <a href="#examples" id="examples"></a>
2021-05-01 15:23:19 +00:00
2024-02-10 22:40:18 +00:00
Δημιουργήστε τις παρακάτω σελίδες σε έναν φάκελο και εκτελέστε έναν διακομιστή ιστού με την εντολή `python3 -m http.server`\
Στη συνέχεια, **αποκτήστε πρόσβαση** στη διεύθυνση `http://127.0.0.1:8000/`vulnerable.html, **κάντε κλικ** στον σύνδεσμο και παρατηρήστε πώς **αλλάζει** η **URL** της **αρχικής** **ιστοσελίδας**.
2021-05-01 15:23:19 +00:00
{% code title="vulnerable.html" %}
```markup
<!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>
```
{% code title="malicious.html" %}
```markup
<!DOCTYPE html>
<html>
2024-02-10 22:40:18 +00:00
<body>
<script>
window.opener.location = "http://127.0.0.1:8000/malicious_redir.html";
</script>
</body>
2021-05-01 15:23:19 +00:00
</html>
```
{% code title="malicious_redir.html" %}
2021-05-01 15:23:19 +00:00
```markup
<!DOCTYPE html>
<html>
<body>
<h1>New Malicious Site</h1>
</body>
</html>
```
{% endcode %}
2024-02-10 22:40:18 +00:00
## Προσβάσιμες ιδιότητες <a href="#accessible-properties" id="accessible-properties"></a>
2021-05-01 15:23:19 +00:00
2024-02-10 22:40:18 +00:00
Στην περίπτωση όπου συμβαίνει μια **διασυνοριακή** πρόσβαση (πρόσβαση ανάμεσα σε διαφορετικούς τομείς), οι ιδιότητες της κλάσης JavaScript **window**, στην οποία αναφέρεται η αναφορά αντικειμένου JavaScript **opener**, που μπορούν να προσπελαστούν από μια κακόβουλη ιστοσελίδα περιορίζονται στα εξής:
2021-05-01 15:23:19 +00:00
2024-02-10 22:40:18 +00:00
- **`opener.closed`**: Αυτή η ιδιότητα προσπελαύνεται για να προσδιοριστεί εάν ένα παράθυρο έχει κλείσει, επιστρέφοντας μια λογική τιμή.
- **`opener.frames`**: Αυτή η ιδιότητα παρέχει πρόσβαση σε όλα τα στοιχεία iframe εντός του τρέχοντος παραθύρου.
- **`opener.length`**: Η αριθμός των στοιχείων iframe που υπάρχουν στο τρέχον παράθυρο επιστρέφεται από αυτή την ιδιότητα.
- **`opener.opener`**: Μια αναφορά στο παράθυρο που άνοιξε το τρέχον παράθυρο μπορεί να ληφθεί μέσω αυτής της ιδιότητας.
- **`opener.parent`**: Αυτή η ιδιότητα επιστρέφει το γονικό παράθυρο του τρέχοντος παραθύρου.
- **`opener.self`**: Αυτή η ιδιότητα παρέχει πρόσβαση στο ίδιο το τρέχον παράθυρο.
- **`opener.top`**: Αυτή η ιδιότητα επιστρέφει το παράθυρο του προγράμματος περιήγησης με την υψηλότερη θέση.
2021-05-01 15:23:19 +00:00
2024-02-10 22:40:18 +00:00
Ωστόσο, σε περιπτώσεις όπου οι τομείς είναι ίδιοι, η κακόβουλη ιστοσελίδα αποκτά πρόσβαση σε όλες τις ιδιότητες που αποκαλύπτονται από την αναφορά αντικειμένου JavaScript [**window**](https://developer.mozilla.org/en-US/docs/Web/API/Window).
2021-05-01 15:23:19 +00:00
2024-02-10 22:40:18 +00:00
# Πρόληψη
2021-05-01 15:23:19 +00:00
2024-02-10 22:40:18 +00:00
Πληροφορίες πρόληψης καταγράφονται στο [HTML5 Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/HTML5\_Security\_Cheat\_Sheet.html#tabnabbing).
2021-05-01 15:23:19 +00:00
2024-02-10 22:40:18 +00:00
## Αναφορές
2021-05-01 15:23:19 +00:00
2024-02-06 03:10:38 +00:00
* [https://owasp.org/www-community/attacks/Reverse_Tabnabbing](https://owasp.org/www-community/attacks/Reverse_Tabnabbing)
2021-05-01 15:23:19 +00:00
2022-04-05 22:24:52 +00:00
2022-04-28 16:01:33 +00:00
<details>
2024-02-10 22:40:18 +00:00
<summary><strong>Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-10 22:40:18 +00:00
Άλλοι τρόποι για να υποστηρίξετε το HackTricks:
2022-04-28 16:01:33 +00:00
2024-02-10 22:40:18 +00:00
* Εάν θέλετε να δείτε την **εταιρεία σας διαφημισμένη στο HackTricks** ή να **κατεβάσετε το HackTricks σε μορφή PDF** ελέγξτε τα [**ΠΑΚΕΤΑ ΣΥΝΔΡΟΜΗΣ**](https://github.com/sponsors/carlospolop)!
* Αποκτήστε το [**επίσημο PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ανακαλύψτε [**The PEASS Family**](https://opensea.io/collection/the-peass-family), τη συλλογή μας από αποκλειστικά [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Συμμετάσχετε στη** 💬 [**ομάδα Discord**](https://discord.gg/hRep4RUj7f) ή στην [**ομάδα telegram**](https://t.me/peass) ή **ακολουθήστε** μας στο **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα** [**HackTricks**](https://github.com/carlospolop/hacktricks) και [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) αποθετήρια του github.
2022-04-28 16:01:33 +00:00
</details>