Siteler Arası Komut Dosyası Test Etme
Siteler Arası Komut Dosyası (XSS), bir uygulama güvenilmeyen verileri alıp istemciye (tarayıcı) doğrulama olmadan gönderdiğinde gerçekleşir. Bu, saldırganların kurbanın tarayıcısında kötü amaçlı komut dosyaları yürütmesine olanak tanıyarak kullanıcı oturumlarının ele geçirilmesine, web sitelerinin tahrif edilmesine veya kullanıcıyı kötü amaçlı sitelere yönlendirmesine neden olabilir.
Bu kusurun Tehdit Ajanlarını, Saldırı Vektörlerini, Güvenlik Zafiyetini, Teknik Etkisini ve İş Etkilerini basit bir şema yardımıyla anlayalım.
XSS Türleri
Stored XSS - Kalıcı XSS olarak da bilinen depolanan XSS, veritabanı / mesaj forumu / yorum alanı gibi kullanıcı girdisi hedef sunucuda depolandığında oluşur. Daha sonra kurban, web uygulamasından depolanan verileri alabilir.
Reflected XSS - Kalıcı olmayan XSS olarak da bilinen yansıyan XSS, kullanıcı girdisi bir web uygulaması tarafından bir hata mesajında / arama sonucunda veya isteğin bir parçası olarak kullanıcı tarafından sağlanan girdide ve kullanıcının sağladığı verileri kalıcı olarak depolamadan anında döndürdüğünde ortaya çıkar.
DOM Based XSS - DOM Tabanlı XSS, verilerin kaynağı DOM'da, havuz da DOM'da olduğunda ve veri akışı tarayıcıdan asla ayrılmadığında bir XSS biçimidir.
Misal
Uygulama, yapım aşamasında doğrulama olmaksızın güvenilmeyen verileri kullanır. Özel karakterlerden kaçılmalı.
http://www.webpage.org/task/Rule1?query=try
Saldırgan, tarayıcısındaki sorgu parametresini şu şekilde değiştirir:
http://www.webpage.org/task/Rule1?query=<h3>Hello from XSS"</h3>
Eller AÇIK
Step 1- Webgoat'ta oturum açın ve siteler arası komut dosyası oluşturma (XSS) Bölümüne gidin. Depolanan Siteler Arası Komut Dosyası (XSS) saldırısı gerçekleştirelim. Senaryonun anlık görüntüsü aşağıdadır.
Step 2- Senaryoya göre, senaryonun kendisinde belirtildiği gibi 'tom' şifresiyle Tom olarak giriş yapalım. "Profili görüntüle" yi tıklayın ve düzenleme moduna geçin. Tom saldırgan olduğu için, bu düzenleme kutularına Java betiği enjekte edelim.
<script>
alert("HACKED")
</script>
Step 3 - Güncelleme biter bitmez, Tom "saldırıya uğradı" mesajını içeren bir uyarı kutusu alır, bu da uygulamanın savunmasız olduğu anlamına gelir.
Step 4 - Şimdi senaryoya göre, jerry (HR) olarak oturum açmamız ve jerry'nin enjekte edilen komut dosyasından etkilenip etkilenmediğini kontrol etmemiz gerekiyor.
Step 5 - Jerry olarak oturum açtıktan sonra, 'Tom'u seçin ve aşağıda gösterildiği gibi' profili görüntüle'yi tıklayın.
Tom'un profilini Jerry'nin hesabından görüntülerken aynı mesaj kutusunu alabilir.
Step 6 - Bu mesaj kutusu sadece bir örnektir, ancak gerçek saldırgan bir mesaj kutusu görüntülemekten çok daha fazlasını yapabilir.
Önleyici Mekanizmalar
Geliştiricilerin, verilerin yerleştirildiği gövde, öznitelik, JavaScript, CSS veya URL gibi HTML bağlamına dayalı olarak tüm güvenilmeyen verilerden çıkış yaptıklarından emin olmaları gerekir.
Giriş olarak özel karakterlere ihtiyaç duyan uygulamalar için, bunları geçerli girdiler olarak kabul etmeden önce yerinde sağlam doğrulama mekanizmaları olmalıdır.