ASP.Net Core Projelerinde Güvenlik- Cross-site scripting attacks (XSS)

Önceki yazımda ASP.Net Core projelerinde CORS ile ilgili uygulamalar gerçekleştirmiştik. Bu yazımda ise Cross Site Scripting ( XSS ) konusundan bahsedeceğim. Faydalı olması dileğiyle . 🙂

Bu yazımız ve beraberinde bundan sonra gelecek yazılardaki amaç; web uygulamalarında en çok rastlanılan güvenlik açıklarını tanımak ve bunlar ile ilgili temel bilgiye sahip olup, bu güvenlik açıklarından korunmayı sağlamaktır. Aslında çoğu zaman .NET Core tarafında güvenlik açıklarına karşı önlemler gömülü olarak zaten tutulmaktadır. .Net Core’un yetmediği zamanlarda ise kullanıcıların bazı güvenlik önlemleri alması gerekir.

  • Cross site scripting kısaca XSS zafiyeti, yazılımcının kullanıcıdan aldığı girdileri veya web site aksiyonlarını HTML veya Javascript filtrelerinden geçirmediği takdirde,işlemi yapan kullanıcı saldırgan ise sitedeki diğer kullanıcılara veya doğrudan sisteme zarar verebilecek kodları çalıştırabilir.
  • XSS saldırısı server tarafındaki bir saldırıan ziyade client tarafında yapılan bir saldırı şeklidir. HTML, Javascript gibi dillerin zafiyeti sonucunda ortaya çıkar. Bu zafiyetle Session,Cookie gibi bilgiler çalınır. Çoğunlukla da Cookieler çalınır.
  • XSS saldırısı web tabanlı bir saldırı şeklidir.
  • XSS saldırısında saldırıya uğrayan uygulama değil, kullanıcıdır. Yani kullanıcıların bilgileridir.
  • En yaygın olarak, web uygulamasında kullanıcıdan bir form aracılığıya data alınıp,dataya herhangi bir validasyon yapmadan zararlı olup olmadığını bilmeden ekrana yazılması istendiği zaman; bu saldırı ortaya çıkar.
  • XSS saldırısı ile kötü niyetli kullanıcı, web sitedeki istediği scripti çalıştırabilir. Ve beraberinde web sitesinin görünümü değiştirebilir.

Peki senaryo nasıl işler ?

  • Senaryonun başrollerinde; kötü niyetli kullanıcı, kurban ve güvenli web site bulunur. Güvenli web sitesi diyoruz ama aslında bu sitede güvenlik açığı var fakat kurbanın haberi yok 🙁
  • Web sitesinde XSS açığı varsa hacker kötü niyetli scriptini, genelde Javascript , bu güvenli olduğu düşünülen web sitesine enjekte eder. Cookie biligilerini çalabileceğini düşündüğü HTML’i çalıştırır.
  • Kurban güvenli sandığı web sitesini ziyaret ettiği an, kötü niyetli script çalışmış olur.
  • Kurbanın Browser’ında kötü niyetli script çalıştıktan sonra arzu edilen bilgiler ( cookie, session token vb.) hackerın tarafına geçmiş olur.

XSS zafiyetinin en çok ortaya çıktığı durum, kullanıcıdan data alındığı zamandır. Form elemanları kullanıldığı zaman ,yazılımcı validasyon işlemi gerçekleştirmeden bilgileri basmak istediğinde gerçekleşir. Genellikle de cookie bilgileri çalınır.

En önemli iki tane XSS saldırısı vardır.

  • Reflected XSS
  • Stored XSS

Bir sonraki yazıda Reflected XSS’den bahsedeceğim. Görüşmek üzere 🙂

Kaynakça