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?

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.
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.
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ği | Bilgisayar 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. |
| Etki | Yü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ı Dili | Saldı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
XSS ve CSRF Arasındaki Farklar

- 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.