Xss Saldırılarından Korunma Yöntemleri

Yazının başından da anlayacağınız gibi Xss’den Korunma Yöntemlerini anlatacağım. XSS Zaafiyetinin nereden kaynaklandığı, çözüm aşamasında da önemli bir noktadır. Geliştirici olarak kendinize sormanız gereken bir soru ve bunun da belirli bir cevabı bulunmaktadır.

Kullanıcıdan aldığımız veriler nerelerde tekrar kullanıcıya gösteriliyor.

  1. HTML İçerisinde
  2. Javascript İçerisinde
  3. DOM İçerisinde

kullanıcıdan aldığımız veriler nerelerde tekrar kullanıcıya gösteriliyor bir kullanıcıdan alınan veriler tekrar Yukarıdaki 3 farklı alandan bir ya da birkaçına gösterilir hepsi için korunma yöntemleri ayrı olup bu yöntemler aşağıda incelenecektir.

HTML İçerisinde XSS’den Korunma

Örnek bir saldırı sarı senaryosu geliştirelim. Bir ziyaretçi defteri düşünelim. Ziyaretçi adını mesajını yazıp gönderir Bu daha sonra aynı ekran üzerine yazdırılır. Saldırgan Mesaj kısmına <script alert(“XSS”);</script> yazdığını varsayalım. Saldırganın Bu işyerinde başarılı olabilmesi için kesinlikle bir <script> ifadesi ile birlikte tag başlatmak zorundadır. Aksi halde JavaScript kodunu çalıştırmayacaktır. Kullanıcının hiçbir zaman tag başlatamaması için de “<“

ifadesini encode ediyoruz.

Javascript İçerisinde XSS’den Korunma

Bazı Uygulamalarda ise kullanıcıdan alınan veri bir javascript marifetiyle ekran üzerinde istenilen yerlerde gösterilir

Yukarıdaki örnekte olduğu üzere Ara parametresinden gelen değer “yazdir” isimli p tagı içerisinde yazılacaktır. Ancak bu yazdırma JavaScript’in innerHTML özelliği ile yapılmaktadır. Bir <script> tag’ı başlatılmış olup, bunun içerisinde kullanıcıdan alınan veri kullanılır. Saldırgan bu durumda açılmış olan <script> içerisinde bir zararlı ifade yazmak durumundadır. Bu durumda tekrar <script> tagını vaşlatması gerekmektedir.

dosyaadi.php?ara=a” alert(“XSS”); m=;

Sonuç:

Saldırı bu şekilde başarıya ulaşmış olacaktır. Bunun yanı sıra ikinci bir teknik olarak şu yol izlenebilir.

dosyaadi.php?ara=;</script><b>0z4n</b>

Sonuç:

</script> tag’ıyla birlikte ilk tag kapatılmış duruma gelir. Böylece kişi artık istediği JavaScript kodunu HTML kodunu tekrar başlatabilir.

Bu 2 farklı yöntemlerden de korunmanın yolları gayet basittir. İlk örnekte anlattığımız üzere ” ve ‘ karakterlerinin encode edilmesi. İkinci Örnekte ise “<” ve “>” karakterinin encode edilmesiyle bu saldırı teknikleri de önlenebilmektedir.

DOM İçerisinde XSS’den Korunma

Bu tehdit türünde ise kullanıcıdan alınan veri bir DOM elementinin özelliğine müdahale edilebilir. Örnek vermek gerekirse kullanıcıdan alınan renk bilgisi bir tablonun arka plan rengini ya da sayfanın arka plan rengini belirleyebilir. Yani kullanıcı farkında olmadan aslında body ve table elementlerinin style düzenine müdahale etmiştir.

Yukarıdaki örnekler kullanıcıdan alınan renk parametresi doğrudan body elementinin Bgcolor özelliğinde kullanılmıştır. Şimdi saldırı gerçekleştirelim.

dosyaadi.php?renk=blue” onload=”alert(‘XSS’)

Sonuç:

Böylece XSS başarılı olmuş olurdu. Bunun çözümü ise yine kullanıcıdan alınan “karakterinin encode edilmesidir. Fakat bir özel element var ki doğrudan javascript çağrılmaya gayet müsaittir.

Yukarıdaki örnekte ise doğrudan JavaScript kodlarının Çalıştırılabildiğini gördük. Bu anlamda alınabilecek önlem kullanıcıdan gelen verinin bir websayfası URL’i olup olmadığının kontrol edilmesidir. HTTP,HTTPS gibi ifadelerinin kontrolü ile bu anlaşılabilir.

Örneklerle birlikte XSS’den korunma yollarını görmüş olduk. Bu anlamda korunma yöntemlerini özet geçecek olursak neler yapmalıyız?

  • HTML İçerisinde Encode

  • JavaScript Ve DOM Attribute İçerisinde Encode

  • URL Kontrolü

XSS’den Korunma Fonksiyonu

Bu yazımda “Mustafa AltınKaynak” hocamın “Uygulamalı Siber Güvenlik Ve Hacking” kitabından faydalandım. Kesinlikle okumanızı tavsiye ederim. Başka yazıda görüşmek üzere 🙂

Bunlara da bakmak isteyebilirsin ;)

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir