Yansıyan XSS (Siteler Arası Komut Dosyası)
Reflected XSS (Cross-Site Scripting) Yansıtılan Siteler Arası Komut Dosyası Çalıştırma, bir web uygulamasının kullanıcıdan gelen verileri doğru bir şekilde doğrulamadığında ve çıktıya dahil ettiğinde ortaya çıkan bir güvenlik açığıdır. Bu tür bir saldırıda, saldırgan zararlı bir kodu (genellikle JavaScript) bir web sitesine enjekte eder ve bu kod, site tarafından kaydedilmeden doğrudan kullanıcının tarayıcısında çalıştırılır. Reflected XSS genellikle bir URL veya form verisi üzerinden gerçekleşir. Kurban, zararlı bağlantıya tıklayıp web sitesine yönlendirildiğinde zararlı kod anında çalışır. Bu tür saldırılar, kullanıcıların oturum bilgilerini çalmak, kimlik avı saldırıları düzenlemek veya diğer kötü amaçlı işlemleri gerçekleştirmek için kullanılabilir.
Reflected XSS Saldırısı Örneği
Bir forum sitesinde oturum açmayı gerektiren bir sayfayı ziyaret ederken, bir saldırgan şu arama sorgusunu çalıştırır:
Bu işlem şu olaylara neden olur:
- Sorgu, “XSS” yazan bir uyarı kutusu (alert box) üretir.
- Sayfa, şöyle bir mesaj görüntüler: “<script type=’text/javascript’>alert(‘XSS’);</script> bulunamadı.”
- Sayfanın URL’si şu şekildedir:
Bu durum, saldırgana sitenin savunmasız olduğunu gösterir. Bunun üzerine, saldırgan kendi URL’sini oluşturur:
Ve bunu zararsız görünen bir e-posta bağlantısına gömerek forum kullanıcılarına gönderir.
Gönderen adresi ve konu satırı bazılarına şüpheli görünse de, bu bağlantının tıklanmayacağı anlamına gelmez. Gerçekte, e-postayı alan her 1.000 kişiden sadece biri bile bu bağlantıya tıklasa, birkaç düzine forum kullanıcısının bu zararlı yazılımla enfekte olması anlamına gelir. Kullanıcılar, forumun web sitesine yönlendirilecek ve zararlı komut dosyası tarayıcılarına yansıtılarak saldırganın oturum çerezlerini çalmasına ve forum hesaplarını ele geçirmesine olanak tanıyacaktır.
Reflected XSS Güvenlik Açıklarını Manuel Olarak Test Etme
- Her Giriş Noktasını Test Edin: Uygulamanın HTTP isteklerindeki her veri giriş noktasını ayrı ayrı test edin. Bu, URL sorgu dizesi, mesaj gövdesindeki parametreler, diğer veriler ve URL dosya yolunu içerir. Ayrıca, HTTP başlıklarını da test edin, ancak yalnızca belirli HTTP başlıkları aracılığıyla tetiklenebilen XSS benzeri davranışlar pratikte kullanılabilir olmayabilir.
- Rastgele Alfasayısal Değerler Gönderin: Her giriş noktası için benzersiz rastgele bir değer gönderin ve bu değerin yanıt içinde yansıtılıp yansıtılmadığını kontrol edin. Bu değer, çoğu giriş doğrulamasından geçecek şekilde tasarlanmalı, bu nedenle oldukça kısa olmalı ve yalnızca alfasayısal karakterler içermelidir. Yaklaşık 8 karakter uzunluğundaki rastgele bir alfasayısal değer genellikle idealdir. Uygun rastgele değerler oluşturmak için Burp Intruder’ın rastgele üretilen hex değerlerini içeren sayı yüklerini kullanabilirsiniz. Ayrıca, Burp Intruder’ın grep yük ayarlarını kullanarak gönderilen değeri içeren yanıtları otomatik olarak işaretleyebilirsiniz.
- Yansıma Bağlamını Belirleyin: Rastgele değerin yanıt içinde yansıtıldığı her konum için bağlamını belirleyin. Bu, HTML etiketleri arasındaki metin, bir etiket özelliği içinde, bir JavaScript dizesi içinde vb. olabilir.
- Bir Aday Yükü Test Edin: Yansıtmanın bağlamına göre, yanıt içinde değişmeden yansıtılırsa JavaScript çalıştırmasını tetikleyecek bir XSS yükü test edin. Burp Repeater’ı kullanarak isteği gönderin, yükü ekleyip yeniden gönderin ve yanıtı inceleyin. Orijinal rastgele değeri istekte bırakıp XSS yükünü önüne veya arkasına ekleyerek ve ardından rastgele değeri Burp Repeater’da arama terimi olarak kullanarak yansıtmayı hızlıca bulun.
- Alternatif Yükleri Test Edin: Aday XSS yükü uygulama tarafından değiştirilmiş veya tamamen engellenmişse, yansıma bağlamına ve yapılan giriş doğrulama türüne dayalı olarak çalışan bir XSS saldırısı gerçekleştirebilecek alternatif yükler ve teknikler test etmeniz gerekecektir. Daha fazla ayrıntı için cross-site scripting (siteler arası komut dosyası çalıştırma) bağlamlarına bakın.
- Saldırıyı Bir Tarayıcıda Test Edin: Son olarak, Burp Repeater’da çalışıyor gibi görünen bir yük bulmayı başarırsanız, saldırıyı gerçek bir tarayıcıda test edin (URL’yi adres çubuğuna yapıştırarak veya Burp Proxy’nin intercept görünümünde isteği değiştirerek) ve enjeksiyon yapılan JavaScript’in gerçekten çalışıp çalışmadığını kontrol edin. Çoğu zaman, başarılı olup olmadığını görmek için tarayıcıda görünür bir açılır pencereyi tetikleyecek basit bir JavaScript (örneğin, alert(document.domain)) çalıştırmak en iyisidir.
Reflected XSS (Yansıtılan Siteler Arası Komut Dosyası Çalıştırma), web uygulamalarında kullanıcıdan alınan verilerin doğru şekilde kontrol edilmediği ve doğrudan çıktıya dahil edildiği bir güvenlik açığıdır. Bu tür bir açık, zararlı JavaScript kodlarının kullanıcının tarayıcısında çalışmasına neden olabilir. Saldırganlar, bu açığı kullanarak kullanıcıların kişisel bilgilerini çalabilir, kimlik avı saldırıları düzenleyebilir veya başka kötü amaçlı işlemler gerçekleştirebilir.
Reflected XSS açıklarından korunmak için, web uygulamaları kullanıcıdan gelen verileri dikkatlice kontrol etmeli ve temizlemelidir. Bu, güvenliği artırmak için temel bir adımdır. Ayrıca, güvenlik önlemleri ve HTTP başlıkları kullanılarak bu tür saldırılara karşı koruma sağlanabilir.
Bu tür açıkları tespit etmek için çeşitli testler yapılmalıdır. Giriş noktalarını kontrol etmek, rastgele değerler kullanarak yanıtları incelemek ve zararlı kodları test etmek bu sürecin bir parçasıdır. Burp Suite gibi araçlar bu testleri kolaylaştırabilir.
Sonuç olarak, web uygulamalarının güvenliğini sağlamak için düzenli testler yapmak ve güncellemeler yapmak önemlidir. Reflected XSS gibi açıkları belirlemek ve önlemek, kullanıcıların güvenliğini korumak için gereklidir. Bu yaklaşım, web uygulamalarını potansiyel tehditlerden korur ve güvenli bir çevrimiçi deneyim sağlar.
Bu konuda daha fazla bilgi edinmek veya profesyonel yardım almak isterseniz, Nesil Teknoloji’nin iletişim sayfasını ziyaret edebilirsiniz. Uzmanlar, Reflected XSS gibi güvenlik açıkları hakkında size rehberlik edebilir ve çözümler sunabilir.
Hazırlayan-Yazan: Pelin KASACI