hacktricks/pentesting-web/reverse-tab-nabbing.md
2024-02-10 18:14:16 +00:00

113 lines
6.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<details>
<summary><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong> ile sıfırdan kahraman olmak için AWS hackleme öğrenin<strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamınızı görmek** veya **HackTricks'i PDF olarak indirmek** için [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın** veya **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)'u **takip edin**.
* **Hacking hilelerinizi** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına **PR göndererek paylaşın**.
</details>
# Açıklama
Bir **saldırgan**, bir **kurban** tarafından tıklanacak olan **`target="_blank" rel="opener"`** özniteliğine sahip bir **`<a`** etiketinin **`href`** argümanını **kontrol edebildiği** bir durumda, **saldırgan** bu **bağlantıyı** kendi kontrolü altındaki bir web sitesine (bir **zararlı** **web sitesi**) yönlendirebilir. Ardından, kurban bağlantıya tıkladığında ve saldırganın web sitesine eriştiğinde, bu **zararlı** **web sitesi**, javascript nesnesi **`window.opener`** aracılığıyla **orijinal sayfayı kontrol edebilir**.\
Eğer sayfada **`rel="opener"`** bulunmuyor ancak **`target="_blank"`** bulunuyorsa ve **`rel="noopener"`** de bulunmuyorsa, bu da zayıf olabilir.
Bu davranışı kötüye kullanmanın yaygın bir yolu, `window.opener.location = https://attacker.com/victim.html` aracılığıyla **orijinal web sitesinin konumunu değiştirmek** ve saldırgan tarafından kontrol edilen, **orijinaline benzeyen** bir web sitesine yönlendirmektir, böylece kullanıcıdan kimlik bilgilerini isteyebilir.
Ancak, **saldırgan artık orijinal web sitesinin pencere nesnesini kontrol edebildiği için**, daha gizli saldırılar gerçekleştirmek için başka yollarla da kötüye kullanabilir (belki javascript etkinliklerini değiştirerek bilgileri kendisi tarafından kontrol edilen bir sunucuya çalmak?)
# Genel Bakış
## Geri bağlantı ile
Önleme özniteliği kullanılmadığında, ana ve alt sayfalar arasındaki bağlantı:
![https://owasp.org/www-community/assets/images/TABNABBING_OVERVIEW_WITH_LINK.png](https://owasp.org/www-community/assets/images/TABNABBING\_OVERVIEW\_WITH\_LINK.png)
## Geri bağlantı olmadan
Önleme özniteliği kullanıldığında, ana ve alt sayfalar arasındaki bağlantı:
![https://owasp.org/www-community/assets/images/TABNABBING_OVERVIEW_WITHOUT_LINK.png](https://owasp.org/www-community/assets/images/TABNABBING\_OVERVIEW\_WITHOUT\_LINK.png)
## Örnekler <a href="#examples" id="examples"></a>
Aşağıdaki sayfaları bir klasöre oluşturun ve `python3 -m http.server` ile bir web sunucusu çalıştırın.\
Ardından, `http://127.0.0.1:8000/`vulnerable.html'ye **erişin**, bağlantıya **tıklayın** ve **orijinal** **web sitesinin URL'sinin nasıl değiştiğini** not edin.
{% 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="kötücül.html" %}
```markup
<!DOCTYPE html>
<html>
<body>
<script>
window.opener.location = "http://127.0.0.1:8000/malicious_redir.html";
</script>
</body>
</html>
```
{% code title="kötü_niyetli_redir.html" %}
```markup
<!DOCTYPE html>
<html>
<body>
<h1>New Malicious Site</h1>
</body>
</html>
```
{% endcode %}
## Erişilebilir özellikler <a href="#accessible-properties" id="accessible-properties"></a>
**Çapraz kökenli** bir erişimin (farklı alanlar arasında erişim) gerçekleştiği senaryoda, kötü niyetli bir site tarafından erişilebilen **opener** JavaScript nesne referansıyla ilişkilendirilen **window** JavaScript sınıf örneğinin erişebileceği özellikler aşağıdakiyle sınırlıdır:
- **`opener.closed`**: Bu özellik, bir pencerenin kapatılıp kapatılmadığını belirlemek için erişilir ve bir boolean değeri döndürür.
- **`opener.frames`**: Bu özellik, mevcut pencere içindeki tüm iframe öğelerine erişim sağlar.
- **`opener.length`**: Bu özellik, mevcut penceredeki iframe öğelerinin sayısını döndürür.
- **`opener.opener`**: Bu özellik aracılığıyla, mevcut pencereyi açan pencereye referans alınabilir.
- **`opener.parent`**: Bu özellik, mevcut pencerenin üst penceresini döndürür.
- **`opener.self`**: Bu özellik, mevcut pencereye erişim sağlar.
- **`opener.top`**: Bu özellik, en üstteki tarayıcı penceresini döndürür.
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 sunulan tüm özelliklere erişim sağlar.
# Önleme
Önleme bilgileri [HTML5 Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/HTML5\_Security\_Cheat\_Sheet.html#tabnabbing) belgesine kaydedilmiştir.
## Referanslar
* [https://owasp.org/www-community/attacks/Reverse_Tabnabbing](https://owasp.org/www-community/attacks/Reverse_Tabnabbing)
<details>
<summary><strong>AWS hacklemeyi sıfırdan kahraman olmak için</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>'ı öğrenin!</strong></summary>
HackTricks'i desteklemenin diğer yolları:
* Şirketinizi HackTricks'te **reklamınızı görmek** veya HackTricks'i **PDF olarak indirmek** için [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* Özel [**NFT'lerden**](https://opensea.io/collection/the-peass-family) oluşan koleksiyonumuz [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'i keşfedin
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın** veya **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)'u **takip edin**.
* **Hacking hilelerinizi** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına **PR göndererek** paylaşın.
</details>