CWE-79: Cross-site Scripting (XSS)

CWE-79: Cross-site Scripting (XSS)

Aralık 28, 2020 Kapalı Yazar: admin

CWE-79: Cross-site Scripting (XSS)


CWE-79: Cross-site Scripting (XSS) saldırıları, kötü amaçlı komut dosyalarının güvenilir web sitelerine enjekte edilmesini içeren bir enjeksiyondur. CWE-79: Cross-site Scripting (XSS) saldırıları genel olarak bir saldırganın tarayıcı tarafı komut dosyası şeklinde kötü amaçlı kodu farklı bir son kullanıcıya göndermek için bir web uygulaması kullandığında oluşmaktadır. Kötü amaçlı komut dosyası web sitesine yerleştirildikten sonra, saldırgan çeşitli kötü amaçlı etkinlikler gerçekleştirebilir. Saldırgan, kurbanın makinesinden saldırgana, oturum bilgilerini içerebilecek tanımlama bilgileri gibi özel bilgileri aktarabilir. Saldırgan, kurban adına bir web sitesine kötü niyetli istekler gönderebilir ve bu, mağdurun o siteyi yönetmek için yönetici ayrıcalıklarına sahip olması durumunda site için özellikle tehlikeli olabilir.


CWE-79-Cross-Site Scripting Türleri

XSS saldırıları genellikle üç kategoriye ayrılabilir. Bunlar;
depolanan
dom tabanlı
yansıtılan şeklindedir.
Depolanan saldırılar: Enjekte edilen komut dosyasının bir veritabanında, bir mesaj forumunda, ziyaretçi günlüğünde, yorum alanında vb. Hedef sunucularda kalıcı olarak depolandığı saldırılardır. Kurban daha sonra, depolanan komut dosyasını istediğinde sunucudan kötü amaçlı komut dosyasını alır.


Yansıtılmış saldırılar: Bir hata mesajı, arama sonucu veya isteğin bir parçası olarak sunucuya gönderilen girdilerin bir kısmını veya tamamını içeren başka bir yanıt gibi enjekte edilen komut dosyasının web sunucusundan yansıtıldığı saldırılardır. Yansıyan saldırılar, e-posta mesajı veya başka bir web sitesi gibi başka bir yol aracılığıyla mağdurlara iletilir. Bir kullanıcı, kötü amaçlı bir bağlantıya tıklaması veya kötü niyetli bir siteye göz atması için kandırıldığında, enjekte edilen kod savunmasız web sitesine gider ve bu da saldırıyı kullanıcının tarayıcısına geri yansıtır. Tarayıcı daha sonra kodu “güvenilir” bir sunucudan geldiği için yürütür.


Zayıflık sonuçları, kullanıcının çerezlerinde saklanan bilgilerin ifşa edilmesini veya çalınmasını ve Truva atı saat programları veya diğer kötü amaçlı yazılımları yükleyerek gizliliği riske atmayı içerir. Güvenlik açığı, Mimari ve Tasarım, Uygulama aşamalarında ortaya çıkar.
DOM Tabanlı XSS: DOM tabanlı XSS’de istemci, sayfaya XSS enjeksiyonunu gerçekleştirir; diğer türlerde, sunucu enjeksiyonu gerçekleştirir. DOM tabanlı XSS ​​genellikle, kullanıcı formu göndermeden önce bir form üzerinde akıl sağlığı kontrolleri gerçekleştiren Javascript gibi, istemciye gönderilen sunucu kontrollü, güvenilir komut dosyasını içerir. Sunucu tarafından sağlanan komut dosyası, kullanıcı tarafından sağlanan verileri işler ve ardından web sayfasına geri enjekte ederse (dinamik HTML gibi), DOM tabanlı XSS ​​mümkündür.


CWE-79: Cross-site Scripting (XSS) Meydana Geldiği Durumlar

  1. Güvenilmeyen veriler, genellikle bir web isteğinden bir web uygulamasına girer.
  2. Web uygulaması dinamik olarak bu güvenilmeyen verileri içeren bir web sayfası oluşturur.
  3. Sayfa oluşturma sırasında uygulama, verilerin JavaScript, HTML etiketleri, HTML nitelikleri, fare olayları, Flash, ActiveX vb. Gibi bir web tarayıcısı tarafından yürütülebilir içeriği içermesini engellemez.
  4. Bir kurban, güvenilmeyen veriler kullanılarak enjekte edilen kötü amaçlı komut dosyası içeren bir web tarayıcısı aracılığıyla oluşturulan web sayfasını ziyaret eder.
  5. Komut dosyası, web sunucusu tarafından gönderilen bir web sayfasından geldiğinden, kurbanın web tarayıcısı kötü amaçlı komut dosyasını web sunucusunun etki alanı bağlamında yürütür.
  6. Bu, bir etki alanındaki komut dosyalarının kaynaklara erişememesi veya farklı bir etki alanındaki kod çalıştırmaması gerektiğini belirten web tarayıcısının aynı kaynak politikasının amacını etkili bir şekilde ihlal eder.

Örnek:


Aşağıdaki kod, HTTP GET kullanıcı adı parametresine dayalı olarak bir web sayfasında bir karşılama mesajı görüntüler. Bu örnek, Yansıtılmış XSS türünü ifade eder.
Örnek Dil: PHP
$ kullanıcı adı = $ _GET [‘kullanıcı adı’];
echo ‘ Hoş Geldiniz,’. $ kullanıcı adı. ”;
Parametre rastgele olabileceğinden, sayfanın url’si, $ username gibi komut dosyası sözdizimini içerecek şekilde değiştirilebilir.
http://trustedSite.example.com/welcome.php?username=
Bu, zararsız bir uyarı diyaloğunun açılmasına neden olur. Başlangıçta bu bir güvenlik açığı olarak görünmeyebilir. Sonuçta, neden birisi kötü amaçlı kodun kendi bilgisayarında çalışmasına neden olan bir URL girsin? Gerçek tehlike, bir saldırganın kötü amaçlı URL’yi oluşturması ve ardından kurbanları URL’ye giden bir bağlantıyı ziyaret etmeye ikna etmek için e-posta veya sosyal mühendislik hileleri kullanmasıdır. Kurbanlar bağlantıya tıkladıklarında, kötü amaçlı içeriği istemeden savunmasız web uygulaması aracılığıyla kendi bilgisayarlarına geri yansıtırlar.