XSS (Cross-Site Scripting) Nedir, Nasıl Çalışır? XSS Açığı Nasıl Kapatılır?

XSS (Cross-Site Scripting) Nedir, Nasıl Çalışır? XSS Açığı Nasıl Kapatılır?
Hosting Fiyatları

Siteler arası komut dosyası çalıştırma, meşru ve güvenilir bir web sitesindeki bir güvenlik açığından yararlanarak siber suç işlemenin başka bir yoludur. Verileri çalmak, hesaplara erişmek vb. için genellikle son kullanıcıların tarayıcılarını hedefleyen yaygın bir siber saldırıdır, ancak web sitenizi tahrif etmek ve tehlikeye atmak için de kullanılabilir.

XSS (Cross-Site Scripting) Nedir?

Siteler arası komut dosyası çalıştırma veya XSS saldırısı, savunmasız bir web uygulamasının parçası olarak kötü amaçlı kod çalıştırmayı içeren bir siber saldırı yöntemidir. SQL enjeksiyonları gibi diğer saldırı vektörlerinin aksine XSS uygulamayı doğrudan hedeflemez, öncelikli olarak kullanıcıyı hedefler.

XSS (Cross-Site Scripting) Nasıl Çalışır?

Kaynak: geeksforgeeks

Bilgisayar korsanlarının XSS gerçekleştirmek için öncelikle hedeflenen kişinin ziyaret ettiği bir web sitesine kötü amaçlı kodu (yük) enjekte etmenin bir yolunu bulması gerekir. Yürütme, bir web sayfası yüklendiğinde veya bir kullanıcı köprüler gibi belirli öğelerin üzerine geldiğinde başka şekillerde tetiklenebilir.

Web sitesi veya uygulamada uygun veri temizliği yoksa, kötü amaçlı komut dosyası hedeflenen kişinin sisteminde kod yürütür. Komut dosyası, görünüşte güvenilir bir web sitesinden geldiği için hedeflenen kişinin tarayıcısı, meşruiyetini sorgulamadan onu çalıştırır.

Kötü amaçlı komut dosyası, güvenilir web sitesi adına hareket ettiğinden, oturum belirteçleri ve çerezler dahil olmak üzere müşterinin tarayıcısında saklanan potansiyel olarak hassas bilgilere erişebilecektir.

XSS (Cross-Site Scripting) Saldırılarının Sebepleri  

Siteler Arası Komut Dosyası Çalıştırma (XSS) saldırıları aşağıdaki durumlarda gerçekleşir:

  • Veriler bir web uygulamasına güvenilmeyen bir kaynaktan, çoğunlukla bir web isteğinden girer.
  • Veriler, kötü amaçlı içerik için doğrulanmadan bir web kullanıcısına gönderilen dinamik içeriğe dahil edilir.

Web tarayıcısına gönderilen kötü amaçlı içerik, genellikle bir JavaScript segmenti biçimini alır, ancak HTML, Flash veya tarayıcının yürütebileceği diğer herhangi bir kod türünü de içerebilir. XSS’ye dayalı saldırıların çeşitliliği neredeyse sınırsızdır, ancak bunlar genellikle çerezler veya diğer oturum bilgileri gibi özel verilerin bilgisayar korsanına iletilmesini, hedeflenen kişinin bilgisayar korsanı tarafından kontrol edilen web içeriğine yönlendirilmesini veya kullanıcının makinesinde diğer kötü amaçlı işlemlerin gerçekleştirilmesini içerir.

XSS (Cross-Site Scripting) Saldırılarını Tespit Etme

XSS güvenlik açıklarını tespit etmenin en kolay yolu, bir güvenlik açığı tarayıcısı kullanmaktır. Bir web sayfasında manuel kod kontrolleri uygulayabilirsiniz. Bir kodlama uzmanı değilseniz, bu görevi zor bulabilirsiniz. Open Web Application Security Project (OWASP) aşağıdakileri önerir:

  • Girdinin HTML veya JavaScript ile aynı HTTP yanıtlarında taşınmadığından emin olun.
  • Kendi veri tabanınızdan gelen referans değerler olmadığı ve kurcalanmadığından emin olmadığınız sürece tüm verileri aktarım için kodlayın.
  • Verilerin belge nesne modeline (DOM) nasıl eklendiği konusunda dikkatli olun.

XSS Saldırı Türleri

XSS’nin üç ana türü vardır: stored, reflected ve DOM tabanlı XSS saldırıları.

1. Stored XSS

Stored XS kalıcı veya Tip-1 XSS olarak da bilinir. Bilgisayar korsanı burada bir payload enjekte eder ve bunu web sitesine veya web uygulaması veri tabanına kaydeder. Kötü amaçlı komut dosyası, bir istek sırasında sitenin yasal koduyla birlikte yürütülür.

Blind XSS olarak bilinen stored XSS saldırılarının başka bir alt kategorisi vardır. Blind XSS saldırısıyla, bilgisayar korsanı sistemin kendisinin erişemeyeceği bir bölümünü hedefler ve bu nedenle enjeksiyonun başarılı olup olmadığını hemen kontrol edemez. Bunun için bir hedef, içeriği daha sonra müşterilere değil bir yöneticiye gösterilen bir iletişim formu olabilir.

2. Reflected XSS

Reflected XSS, kalıcı olmayan veya Tip-2 XSS olarak da bilinir. Reflected XSS saldırılarında, bilgisayar korsanları yükü uygulamada veya web sitesinin altyapısında depolamaz. Bunun yerine, özel olarak hazırlanmış bir bağlantıya yanıt olarak sunucudan yansıtılır.

Reflected XSS, web uygulamalarında çok daha yaygındır ve yükün yalnızca bir istekte geçerli olduğu tek seferlik bir siber saldırı olduğu için daha az zararlı olarak kabul edilir.

Kaynak: geeksforgeeks

3. DOM Tabanlı XSS

DOM tabanlı bir XSS saldırısı, kullanıcılar bir bilgisayar korsanı tarafından oluşturulan bir bağlantıya tıkladığında gerçekleşir. Bilgisayar korsanları daha sonra yükü kötü amaçlı URL bağlantısına yerleştirir. Oradan, yürütüldüğü tarayıcının Belge Nesne Modeli’ne (DOM) iletilir. Bunun nedeni, tarayıcının isteği güvenilir bir web sitesinden veya uygulamadan geliyormuş gibi yorumlamasıdır.

XSS Saldırılarının İşletmelere Olumsuz Etkileri

XSS saldırılarının yıkıcı sonuçları olabilir. Güvenlik açığı bulunan bir uygulamaya enjekte edilen kod, verileri sızdırabilir veya kullanıcının makinesine kötü amaçlı yazılım yükleyebilir. Bilgisayar korsanları, oturum tanımlama bilgileri aracılığıyla yetkili kullanıcı kılığına girerek kullanıcı hesabı tarafından izin verilen herhangi bir eylemi gerçekleştirmelerine olanak tanır.

XSS, bir işletmenin itibarını da etkileyebilir. Bilgisayar korsanı, içeriğini değiştirerek şirketin imajına zarar vererek veya yanlış bilgi yayarak bir kurumsal web sitesini tahrif edebilir. Bir bilgisayar korsanı, hedef web sitesini ziyaret eden kullanıcılara verilen talimatları değiştirerek davranışlarını yanlış yönlendirebilir. Bu senaryo, hedef bir devlet web sitesiyse veya kriz zamanlarında hayati kaynaklar sağlıyorsa özellikle tehlikelidir.

XSS’nin Hedefleri Hangi Dillerdir?

Temizlenmemiş kullanıcı girişi, herhangi bir web uygulamasını XSS saldırısı riskine sokabilir. XSS saldırıları için en yaygın dil JavaScript’tir, ancak XSS HTML, Flash, VBScript, CSS ve diğer web geliştirme dillerini ve çerçevelerini etkileyebilir.

XSS ve SQL Injection Saldırıları Arasındaki Fark Nedir?

Hem SQL enjeksiyonu hem de XSS saldırısı yaygın bilgisayar korsanlığı teknikleri olsa da, ikisi arasında birkaç önemli fark vardır. Bunlar aşağıdaki şekildedir:

SQL enjeksiyon saldırısıSiteler arası komut dosyası saldırısı
Saldırı TanımıBilgisayar korsanlarının veri odaklı uygulamaları hedeflediği ve belirli eylemleri gerçekleştirerek kullanıcı/kuruluş veri tabanlarını tehlikeye attığı bir saldırı tekniğidir.Bilgisayar korsanlarının, kontrol edebildikleri hedefli kullanıcıların tarayıcılarında kötü amaçlı kod yürüttüğü bir saldırı tekniğidir.
Giriş NoktasıSQL saldırısında ilk erişim, yönlendirmeli uzlaşma tekniği ile sağlanır.XSS saldırısında ilk erişim, halka açık uygulama tekniğinden yararlanılarak sağlanır.
Saldırı TekniğiBilgisayar korsanı, web formu giriş alanına kötü amaçlı SQL sorguları ekler.Bilgisayar korsanı, kötü amaçlı istemci tarafı komut dosyalarını web sayfalarına/web sitelerine enjekte eder.
EtkiYürütme başarılı olduğunda, bilgisayar korsanını mevcut veri tabanını ekleyebilir, silebilir veya değiştirebilir ve güvenlik kontrollerini atlayabilir.Başarılı yürütmenin ardından, bilgisayar korsanı oturum ele geçirme, kimlik bilgisi hırsızlığı, veri hırsızlığı, kullanıcının kimliğine bürünme, hesap ele geçirme vb. işlemler gerçekleştirebilir.
Saldırı DiliSaldırıda kullanılan en yaygın dil SQL’dir.Saldırıda kullanılan en yaygın dil JavaScript’tir.

XSS Test Araçları

Siteler arası komut dosyası çalıştırma saldırısı en popüler riskli siber saldırılardan biri olduğundan, bunu otomatik olarak test etmek için pek çok araç vardır. Nesus ve Nikto gibi olası XSS saldırı güvenlik açıklarını kontrol etmek için çeşitli tarayıcılar bulabiliriz. Her ikisi de oldukça güvenilir kabul edilir.

SOAP UI, olası XSS saldırılarına karşı kontrol için oldukça güçlü bir araç olarak kabul edilebilir. Bu siber saldırıya karşı kontrol etmek için hazır şablonlar içerir. Test sürecini gerçekten basitleştirir.

Ancak, SOAP UI aracıyla bu güvenlik açığını test etmek için API düzeyinde testin bu araçla zaten otomatikleştirilmiş olması gerekir. XSS’ye karşı test etmek için başka bir çözüm, tarayıcı eklentileri olabilir. Ancak eklentiler, bu tür siber saldırılara karşı kontrol etmek için oldukça zayıf bir araç olarak kabul edilir.

Otomatik olarak test ederken bile testi yapan kişi bu siber saldırı türü hakkında iyi bilgiye sahip olmalı ve sonuçları uygun şekilde analiz edebilmelidir.

Uzmanlık, test aracını seçerken de yardımcı olur. Ayrıca, güvenlik açıklarını otomatik bir araçla tararken, manuel olarak test etmenin de iyi bir uygulama olduğunu ve bu şekilde test eden kişinin sonuçları görebileceğini ve analiz edebileceğini bilmek önemlidir.

XSS ile Neler Yapılabilir?

Siteler arası komut dosyası çalıştırma saldırısı gerçekleştiren bilgisayar korsanlarının birden çok hedefi olabilir, ancak hepsinin niyeti kötüdür. Bunlar aşağıdakileri içerebilir:

  • Oturum kimlikleri gibi verilere erişme
  • Hesabını ele geçirmek için bilgisayar korsanının kimliğine bürünmek
  • Hassas bilgileri veya oturum açma kimlik bilgilerini çalmak
  • Truva atı saldırısı gerçekleştirme
  • Site davranışını manipüle etme ve içeriği değiştirme
  • Kötü amaçlı yönlendirmeler

Daha büyük ölçekte, bir XSS saldırısının şirketler üzerindeki etkisi yıkıcı olabilir. Kullanıcılar, web sitenizin veya markanızın güvensiz, gayri meşru veya hileli olduğuna inanarak sizinle iş yapmayı bırakabilir. Bu güven bir kez kırıldığında, onu geri kazanmak son derece zordur. 

XSS ve CSRF Arasındaki Farklar

Siteler arası komut dosyası oluşturma (XSS), bir bilgisayar korsanının hedeflenen kişinin tarayıcısında rasgele JavaScript yürütmesine olanak tanır.

Cross-site request forgery (CSRF), bir bilgisayar korsanının hedeflediği kişinin niyetinde olmadığı eylemleri gerçekleştirmeye teşvik etmesine olanak tanır.

XSS güvenlik açıklarının sonuçları genellikle CSRF güvenlik açıklarından daha ciddidir:

  • CSRF genellikle sadece bir kullanıcının gerçekleştirebildiği eylemlerin bir alt kümesi için geçerlidir. Birçok uygulama, genel olarak CSRF savunmalarını uygular, ancak açıkta bırakılan bir veya iki eylemi gözden kaçırır. Tersine, başarılı bir XSS istismarı, güvenlik açığının ortaya çıktığı işlevsellikten bağımsız olarak, normalde bir kullanıcıyı kullanıcının gerçekleştirebileceği herhangi bir eylemi gerçekleştirmesine neden olabilir.
  • CSRF, “tek yönlü” bir güvenlik açığı olarak tanımlanabilir, çünkü bir bilgisayar korsanı hedeflenen kişiyi bir HTTP isteği göndermeye ikna edebilirken, bu istekten yanıtı alamazlar. Tersine, XSS “iki yönlüdür”, çünkü bilgisayar korsanının enjekte ettiği komut dosyası rasgele istekler yayınlayabilir, yanıtları okuyabilir ve verileri bilgisayar korsanının seçtiği harici bir alan adına sızdırabilir.

Siteler Arası aKomut Dosyasına Karşı Nasıl Korunulur? 

Siteler Arası Komut Dosyasını başarıyla azaltmanıza yardımcı olacak bazı ipuçları aşağıdaki şekildedir:

1. Bağımlılıkların Güncel Olduğundan Emin Olun

Genel bir kural olarak, etkili yama yönetimi veya güvenlik açığı yönetimi programları benimseyin, yüksek öncelikli ve kritik yamaları yayınlanır yayınlanmaz yüklediğinizden emin olun. Ek olarak, bloke edilmiş kod kitaplıklarına dikkat edin, üçüncü taraf kod bağımlılığını en aza indirin ve her zaman kod kitaplıklarına güvenli erişiminiz olduğundan emin olun.

2. Düzenli Güvenlik Denetimleri Yapın

En iyi kodlama uygulamalarının tümünü takip etseniz bile güncellemeler sırasında yapılan küçük hatalar, yanlışlıkla bir XSS güvenlik açığı ortaya çıkarabilir. Web sitelerinizi veya uygulamalarınızı güvenlik açıklarına karşı düzenli olarak taradığınızda, bir boşluk tespit edebilir ve büyük bir sorun haline gelmeden düzeltebilirsiniz.

3. Bir Güvenlik Duvarı Kurun

XSS saldırılarından kaçınmanın başka bir yolu da, XSS saldırısı gibi görünen her türlü etkinliği sürekli olarak tarayan ve engelleyen, sitenize ekstra bir koruma katmanı sağlayan bir web uygulaması güvenlik duvarı kullanmaktır. Ancak, WAF’ler %100 koruma sağlamaz. Bu yüzden son çareniz olmalıdır.

4. Kullanıcı Girişini Doğrulayın

XSS saldırılarını önlemenin bir başka yolu da her giriş alanını doğrulamaktır. Yapabildiğiniz her durumda, kullanıcı girişini belirli bir listeyle sınırlandırmayı düşünün. Örneğin, tüm içeriğin alfanümerik olmasını gerektirebilir ve XSS’de kullanılan HTML veya etiketleri engelleyebilirsiniz.

5. Çıkış Verilerini Kodlayın

Kullanıcı tarafından kontrol edilebilen verilerin HTTP yanıtlarında çıktı olarak verildiği noktada, çıktının etkin içerik olarak yorumlanmasını önlemek için kodlayın. Çıktı içeriğine bağlı olarak bu, URL, HTML, JavaScript ve CSS kodlama kombinasyonlarının uygulanmasını gerektirebilir.

6. Bir İçerik Güvenliği Politikası (CSP) Oluşturun

Bir içerik güvenlik ilkesi (CSP) oluşturmak ve uygulamak, Siteler Arası Komut Dosyası Çalıştırma ve diğer güvenlik açıklarını azaltmanın etkili bir yoludur. Tarayıcıların komut dosyalarını yükleyebileceği ve çalıştırabileceği URL’leri beyaz listeye alarak XSS’yi engeller. Sunucu, istemcinin tarayıcısının güvenilmeyen bir URL’den herhangi bir komut dosyası yürütmesini engeller. CSP, diğer her şey engellenirken yalnızca listelenen alan adlarının çalışabileceği bir izin verilenler listesi görevi görür.

7. Güvenli Tanımlama Bilgileri Kullanın

Kötü amaçlı JavaScript, kullanıcıların oturum kimliklerini içeren çerezleri çalmak için kullanılabilir. İstemci tarafı JavaScript’te tanımlama bilgilerini değiştirmeye veya okumaya neredeyse hiç ihtiyaç olmadığından, tanımlama bilgilerini yalnızca HTTP olarak işaretlemeyi düşünün. Bu, tanımlama bilgilerinin yalnızca kullanıcının tarayıcısı tarafından alınabileceği, saklanabileceği ve gönderilebileceği, ancak JavaScript (kötü amaçlı JavaScript dahil) tarafından okunamayacağı veya değiştirilemeyeceği anlamına gelir. Bilgisayar korsanlarının XSS saldırıları sırasında bunları kullanmasını engellemek için belirli bir IP adresine bağlamak gibi diğer katı çerez kurallarını da benimsemek isteyebilirsiniz.


İlgili İçerikler:

Siber Güvenlik Nedir? İnternet Ortamında Veri Güvenliğini Nasıl Sağlarız?

Zararlı Yazılım Analiz Teknikleri

WAF (Web Application Firewall) Nedir? Web Uygulamalarınızı Koruyun

Sigma ile Tehdit Avcılığı, SIEM Ürünlerinde Tehdit Avı

ARP (Adres Çözümleme Protokolü) Nedir? Nasıl Çalışır? Nelerden Oluşur?

SOC Nedir? Kurulumu, Çalışma Yapısı ve Veri Güvenliğine Faydaları

TLS Nedir, Nasıl Çalışır? HTTPS, TLS ve SSL

Ransomware Nedir? Ransomware Saldırısından Nasıl Korunursunuz?

Exploit Nedir? Ne Amaçla Kullanılır? Exploit Saldırıları ve En Etkili Korunma Yöntemi

DNS Nedir, Ne İşe Yarar? Nasıl Değiştirilir?

Dark Web Nedir? Dark Web vs. Deep Web: İnternetin Karanlık Yüzü

IPS ve IDS Nedir? Nasıl Çalışır?

Domain Sorgulama