XSS nedir?
XSS (Cross-Site Scripting), saldırganın bir web sayfasına kendi JavaScript kodunu yerleştirip, bu kodun diğer ziyaretçilerin tarayıcısında çalışmasını sağladığı açık türüdür. Kod, güvenilen site adına çalıştığı için oturum bilgilerine ve sayfa içeriğine erişebilir.
Sorun, uygulamanın kullanıcıdan aldığı veriyi kontrolsüzce sayfaya yazmasından doğar. Tarayıcı, sayfanın gerçek içeriği ile saldırganın eklediği betiği ayırt edemez.
Nasıl çalışır?
Üç yaygın tür vardır:
- Yansıyan XSS: Zararlı girdi bir bağlantıda taşınır ve yanıta olduğu gibi yansır.
- Depolanan XSS: Girdi veritabanına kaydedilir (yorum, profil alanı vb.) ve sayfayı açan herkese sunulur.
- DOM tabanlı XSS: Açık, sunucuda değil, istemci tarafındaki JavaScript’in veriyi güvensiz biçimde işlemesinde oluşur.
Saldırgan çerezleri çalmaya, kullanıcı adına işlem yapmaya, sahte formlar göstermeye ya da kullanıcıyı başka sayfaya yönlendirmeye çalışabilir.
Sunucu ve hosting ortamında
WordPress, Joomla gibi içerik yönetim sistemlerinde XSS açıklarının büyük kısmı eklentilerden ve temalardan gelir. Yönetici paneline yönelik depolanan XSS, ayrıcalıklı bir oturumun ele geçirilmesine yol açabileceği için özellikle önemlidir.
Sunucu tarafında Content-Security-Policy (CSP) başlığı, çerezlerde HttpOnly ve Secure özellikleri ile bir WAF, saldırının etkisini sınırlamaya yardımcı olur.