Siteler arası komut dosyası çalıştırma(Cross-Site Scripting) (XSS olarak da bilinir), bir saldırganın, kullanıcıların savunmasız bir uygulamayla sahip olduğu etkileşimleri tehlikeye atmasına olanak tanıyan bir web güvenlik açığıdır. Bir saldırganın, farklı web sitelerini birbirinden ayırmak için tasarlanmış aynı menşe politikasını atlatmasına olanak tanır. Siteler arası komut dosyası çalıştırma güvenlik açıkları, normalde bir saldırganın kurban kullanıcı gibi görünmesine, kullanıcının gerçekleştirebileceği herhangi bir eylemi gerçekleştirmesine ve kullanıcının herhangi bir verisine erişmesine izin verir. Kurban kullanıcının uygulama içinde ayrıcalıklı erişimi varsa, saldırgan uygulamanın tüm işlevselliği ve verileri üzerinde tam kontrol sahibi olabilir.










XSS nasıl çalışır?





Siteler arası komut dosyası çalıştırma, savunmasız bir web sitesini kullanıcılara kötü amaçlı JavaScript döndürmesi için manipüle ederek çalışır. Kötü amaçlı kod bir kurbanın tarayıcısında yürütüldüğünde, saldırgan uygulamayla etkileşimlerini tamamen tehlikeye atabilir.








XSS saldırılarının türleri nelerdir?







Üç ana XSS saldırısı türü vardır. Bunlar:



Reflected XSS
Stored XSS
DOM-based











Reflected Saldırsı




Bir uygulama bir HTTP isteğinde veri aldığında ortaya çıkar ve bu verileri güvenli olmayan bir şekilde anında yanıtta içerir.




Aşağıda, yansıtılan bir XSS güvenlik açığının basit bir örneği verilmiştir:



Kod:
https://zararlı-website.com/status?message=All+is+well.

Status: All is well.





Uygulama, veriler üzerinde başka herhangi bir işlem yapmaz, bu nedenle bir saldırgan kolaylıkla aşağıdaki gibi bir saldırı oluşturabilir:




Kod:
https://zararlı-website.com/status?message=

Status:





Stored Saldırısı



Bir uygulama güvenilmeyen bir kaynaktan veri aldığında ortaya çıkar ve bu verileri daha sonraki HTTP yanıtlarında güvenli olmayan bir şekilde içerir.

Söz konusu veriler, HTTP istekleri aracılığıyla uygulamaya gönderilebilir; örneğin, bir blog gönderisindeki yorumlar, bir sohbet odasındaki kullanıcı takma adları veya bir müşteri siparişindeki iletişim bilgileri. Diğer durumlarda, veriler diğer güvenilmeyen kaynaklardan gelebilir; örneğin, SMTP üzerinden alınan mesajları görüntüleyen bir web posta uygulaması, sosyal medya gönderilerini görüntüleyen bir pazarlama uygulaması veya ağ trafiğinden gelen paket verilerini görüntüleyen bir ağ izleme uygulaması.




Kod:
Selam, mesaj




Kod:








DOM Saldırsı





Güvenilmeyen bir kaynaktan verileri güvenli olmayan bir şekilde, genellikle verileri DOM'a yazarak işleyen bazı istemci tarafı JavaScript içerdiğinde ortaya çıkar.

Aşağıdaki örnekte, bir uygulama, bir giriş alanından değeri okumak ve bu değeri HTML içindeki bir öğeye yazmak için bazı JavaScript kullanır:






Kod:
var search = ********.getElementById('search').value;
var results = ********.getElementById('results');
results.innerHTML = 'Arama yaptığın şey: ' + search;



Kod:
Arama yaptığın şey: <img src=1 onerror='/* Zararlı kod... */'>



XSS Neler Yapabilir ?




Siteler arası komut dosyası çalıştırma güvenlik açığından yararlanan bir saldırgan genellikle şunları yapabilir:




Mağdur kullanıcı olarak taklit etme
Kurbanın yapabileceği bir şeyi yapma
Kullanıcının erişebildiği tüm verileri okuyun.
Kullanıcının oturum açma kimlik bilgilerin ve şifrelerini çekme
Web sitesine zarar verme
Web sitesine trojan gömme