Cross Site Scripting (XSS) Açığı Nedir? Nasıl Korunulur?

E-posta Hosting Kampanya

Cross site scripting (XSS) açığı Owasp Top 10 listesinde yer alan yerine göre kritik bir öneme sahip olabilen bir zafiyet türüdür. Cross Site Scripting açığının ortaya çıkma sebebi dışarıdan alınan parametrelerin filtreleme işlemine sokulmadan sayfada işlenmesidir. Cross Site Scripting zafiyeti bulunduran bir sistemde HTML , CSS ve Javascript kodları çalıştırmanız mümkündür.


Cross Site Scripting (XSS) Çeşitleri:

1 – Reflected XSS:


Dışarıdan alınan parametrenin filtrelenmeden sayfaya işlenmesi sonucu ortaya çıkan XSS çeşididir. Reflected XSS bulunduran URL’lere payload (zararlı kod) gömülü bir şekilde kullanıcıya tıklatılması sonucu kullanıcının oturum bilgileri saldırganın eline geçebilir.

Modern browserlar basit seviyedeki payloadları engellemiş olsalar da tarayıcıların bir çoğunun bu güvenlik duvarının bypass yöntemi bulunduğundan Reflected XSS açığı günümüzde hala kritik bir tehlike arz etmektedir.

2 – Stored (Persistent) XSS:


Bu XSS tipi içlerinde en tehlikeli olanıdır. Herhangi formdan , çeşitli parametrelerden gelen verinin direkt olarak sayfada tutulması sonucu ortaya çıkan bir zafiyettir. Reflected XSS ile arasındaki en büyük fark reflected xss tipinde payload genelde kullanıcının göreceği şekilde url’de bulunur. Yani fark edilme ihtimali bilinçli bir kullanıcı için kolay olacaktır. Stored XSS’te ise payloadın bir kere enjekte edilmesi sonucu o sayfayı bir daha kim ziyaret ederse etsin direkt olarak arkadaki payload çalışacaktır. Yani kullanıcıya url’de zararlı kodu göndermeye gerek kalmadan direkt olarak sayfa üzerinden payloadı çalıştırmaya imkan tanıyor.

Stored XSS bulunan sayfalara girmeden zafiyetin bulunduğunu anlayamayacağımız için XSS çeşitleri arasında en tehlikeli tip olarak yerini almaktadır.

3 – DOM (Self) XSS:


Bu XSS tipi diğerlerine oranla daha az tehlike arz etmektedir. DOM XSS ‘ i anlamak için öncelikle DOM ‘ un kelime anlamını bilmemiz gerekmektedir. DOM ‘ un açılımı Document Object Model ‘dir. Tarayıcıların runtime (çalışma) esnasında yorumladığı herşeyi DOM kapsar. DOM XSS bulunan bir sayfaya payload enjekte etmek için runtime esnasında işlem yapmak gerektiğinden diğer açık tiplerine göre istismarı daha zordur. DOM XSS ‘ e enjekte edilen payload sayfa kaynağında baktığında görülemez çünkü adından da anlaşıldığı gibi tarayıcının dom’unda runtime esnasında gerçekleşen işlemler sayfa kaynağında görüntülenememektedir.

Cross Site Scripting (XSS) Saldırılarından Nasıl Korunulur?

Formlardan gelen , direkt olarak URL’den parametrelerle sayfaya dahil olan verileri backend tarafında çeşitli filtrelemerden geçirdikten sonra sayfaya dahil etmek cross site scripting tehlikesini sisteminizde ortadan kaldıracaktır.

Sadece karakter engellemek bazı durumlarda cross site scripting saldırılarından korunmak için yeterli olmayabilir. Örneğin <script> tagını engellediğinizde kullanıcı herhangi bir html koduna onMouseOver veya onLoad gibi çeşitli javascript çalıştırmaya imkan sunan parametreler ile cross site scripting saldırısını yine gerçekleştirebilir. Karakter engeli yapmak yerine

PHP sistemlerden örnek vermek gerekirse htmlspecialchars,strip_tags,trim gibi fonksiyonlardan geçirildikten sonra verilerin sayfaya dahil edilmesi sitenizi saldırılara karşı daha korumalı yapacaktır.