Cyber ​​Security

XSS (Siteler Arası Kod Yazma) Nedir?

XSS, çapraz kod çalıştırma anlamınada gelmektedir. XSS açığı daha çok dinamik web uygulamalarında oluşan bir güvenlik açığıdır. Bir web uygulamasında kullanıcının input alanlarına girdiği javascript kodları aynı şekilde geri dönerek çalışıyorsa bu sitede/uygulamada XSS açığı var demektir. Bu açık türü genel olarak post ve get metotlarının kullanıldığı yerlerde olmaktadır. Basit gibi görünse de, web uygulama saldırılarının çoğu yanlış veya eksik kodlama sonucu ortaya çıkan bu açık yoluyla gerçekleştirilir. 

XSS çoğunlukla tarayıcıda saklanan bilgiler olan web sayfası ziyaret edildiği zaman tarayıcılardaki kullanıcıların depolandığı küçük doyalara saldırı amacı ile kullanılmaktadır. XSS’den yararlanarak, bir saldırgan doğrudan bir kurbanı hedeflemez. Bunun yerine, bir saldırgan, mağdurun ziyaret edeceği bir web sitesi veya web uygulamasındaki var olan bir güvenlik açığından yararlanabilir. Bu da, saldırganın savunmasız web sitesi üzerinden mağdurun tarayıcısına kötü amaçlı bir betik göndermesine neden olacaktır.

Ekran Resmi 2018 05 26 16.56.14

Yukarıdaki şekilde görüldüğü üzere numaralarla isimlendirilen XSS açığının çalışma şeması verilmiştir, adım adım açıklamak gerekirse; 

  1. İlk olarak kullanıcı, parola bilgilerini kullanarak web uygulamasına giriş yaptığı anda kullanıcıya ait hesap bilgileri XSS açığına sahip web sunucu bilgisayarına iletiliyor. 
  2.  Tekrar iletilen bu bilgiler çerez formatında kullanıcıya geri geliyor.
  3.  Saldırgan kimliğindeki kişi XSS zafiyetine sahip URL’yi e-posta yolu ile kullanıcıya gönderiyor.
  4. Kullanıcı gelen bu e-postadaki bağlantıya tıklıyor.
  5. XSS açığına sahip sayfa sunucudan çağrılıyor.
  6. Saldırıyı gerçekleştirecek olan kod çalıştırılıyor.
  7. XSS kodu çalıştırıldıktan sonra kullanıcının bilgisayarında depolanan çerez bilgileri çalınarak çalınmış çerez sunucusunda depolanıyor.
  8. Son olarak saldırgan tarafından çalınan bu kullanıcı bilgileri ile web uygulamasına erişim sağlanıyor.

XSS açığının tanımını yapıp çalışma mantığını anladıktan sonra çeşitlerini açıklayalım. Bu basit ama bir o kadar da ciddi sonuçlara yol açabilecek açığın 3 çeşidi bulunuyor: Reflected XSS, Stored XSS ve DOM (Document Object Model) XSS. 

  •  Reflected XSS, kullanıcıdan alınan amacı sapmış bir girdi olan Javascript kodunun ekrana yansıtılması ile tespit edilen XSS çeşididir. Kullanıcının girilmesi beklenen parametre yerine Javascript kodu girerek bunu ekrana yansıtması ile tespit edilebilen XSS çeşididir. 
  •  DOM XSS ise, dom nesnelerinden kaynaklanan, genellikle # sembolünden sonra girdi denenmesi ve sayfa yenilendiğinde alert alınmasına dayanan açık çeşididir. 
  • Stored (Persistent, Kalıcı) XSS, girilen payloadların anlık olarak ekrana yansıtılması değil, veri tabanı veya başka bir yere kayıt edilmesi ve daha sonrasında da çalıştırılabilmesine olanak sağlayan açık çeşididir. 

XSS açığına nasıl önlem alabiliriz ?

  • Web sayfasında veri girişi yapılan alanlardan  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.
  • Foreach döngüsü kullanmak web uygulamaları güvenliği konusunda daha iyi olacaktır.
  • Html purifier, açık kaynak kodlu ücretsiz bir kütüphanedir, bu kütüphane ile Html Filtreleme, Cross Site Scripting Engelleme, URL Filtreleme güvenlikleri sağlanabilir
  • HTML Encoding ile xss güvenliğimizi sağlamak için html dosyalarımızı şifrelemeliyiz. Bu sayede dosyanın kaynağı diğer kullanıcılar tarafından görülemeyecektir.
  • JavaScript Encoding bu yöntem ile javaScript kodlarımızı da şifreleyerek kod güvenliği sağlayabiliriz.
  • Firewall, Güvenlik duvarı kullanın.
  • Üçüncü parti kütüphane yazılımları kullanın (AntiXSS, HTML Purifier vb.)
  • Web Sitenizi düzenli olarak tarayın.
  • Tanımlama bilgilerinizde HTTPOnly Kullanın.
  • .htaccess” ile kullanıcı girdilerini filtreleyin.

 

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Back to top button