Siteler Arası Komut Dosyası Yazma (XSS), web uygulamalarındaki bir güvenlik açığıdır ve ayrıca saldırganın yasal bir web sayfasına kötü amaçlı bir komut dosyası enjekte edip çalıştırdığı bir istemci saldırısının adıdır. Tarayıcılar HTML görüntüleyebilir ve JavaScript yürütebilir. Uygulama giriş/çıkışta özel karakterlerden kaçmazsa ve kullanıcı girişini tarayıcıya olduğu gibi yansıtırsa, siteler Arası Komut Dosyası Çalıştırma (XSS) saldırısı başlatabilir.
Saldırgan, JavaScript ile Ne Yapabilir?
Bir web sayfasında JavaScript yürütme kabiliyetinin sonuçları ilk başta korkunç görünmeyebilir. Çoğu web tarayıcısı JavaScript’i çok sıkı kontrol edilen bir ortamda çalıştırır. JavaScript, kullanıcının işletim sistemine ve kullanıcının dosyalarına sınırlı erişime sahiptir. Ancak, kötü niyetli içeriğin bir parçası olarak kötüye kullanılması durumunda JavaScript hala tehlikeli olabilir. Örneğin;
- Kötü amaçlı JavaScript, web sayfasının geri kalanının erişebildiği tüm nesnelere erişebilir. Bu, kullanıcının çerezlerine erişim içerir. Çerezler genellikle oturum belirteçlerini depolamak için kullanılır. Bir saldırgan bir kullanıcının oturum çerezini alabilirse, bu kullanıcıyı taklit edebilir, kullanıcı adına işlem yapabilir ve kullanıcının hassas verilerine erişebilir.
- JavaScript, DOM tarayıcısını okuyabilir ve üzerinde isteğe bağlı değişiklikler yapabilir. Neyse ki, bu yalnızca JavaScript’in çalıştığı sayfa içinde mümkündür.
- JavaScript, rastgele içeriğe sahip isteğe bağlı hedeflere HTTP istekleri göndermek için XML Http Request nesnesini kullanabilir.
XSS Kullanarak Çerezler Nasıl Çalınır?
- Saldırgan, kötü amaçlı JavaScript içeriğine sahip hassas bir form göndererek web sitesinin veritabanına bir veri yükü ekler.
- Mağdur, web sayfasını web sunucusundan ister.
- Web sunucusu, mağdurun tarayıcısına, HTML gövdesinin bir parçası olarak saldırganın yükü olan sayfaya hizmet eder.
- Mağdurun tarayıcısı HTML gövdesinde yer alan kötü amaçlı komut dosyasını yürütür. Bu durumda, kurbanın çerezini saldırganın sunucusuna gönderir
- Saldırgan şimdi kimliğe bürünmek için kurbanın çalınan çerezini kullanabilir.
XSS açığına nasıl önlem alabiliriz?
Web sayfasında veri girişi yapılan alanlardan (örneğin:form) meta karakterlerini filtreleyerek bu açığa karşı önlem alabiliriz.
Çerezlerin güvenli hale getirilmesi , çerezler içerisinde kullanıcı adı ve şifre saklanmaması bu açığa karşı alınabilecek önlemler arasında yer alır.