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

6.6 KiB
Raw Blame History

{% hint style="success" %} AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks'i Destekleyin
{% endhint %}

ı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

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

Örnekler

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" %}

<!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" %}

<!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" %}

<!DOCTYPE html>
<html>
<body>
<h1>New Malicious Site</h1>
</body>
</html>

{% endcode %}

Erişilebilir özellikler

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 JavaScript nesne referansı tarafından açığa çıkarılan tüm özelliklere erişim kazanır.

Önleme

Önleme bilgileri HTML5 Cheat Sheet belgesinde belgelenmiştir.

Referanslar

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}