XSS Nedir? Cross-Site Scripting Zafiyeti Nasıl Giderilir?

Cross-site scripting yani XSS, meşru ve güvenilir bir web sitesindeki bir güvenlik açığından yararlanarak siber suç işlemenin popüler bir yoludur. Genellikle son kullanıcıların tarayıcılarını veri çalmak, hesaplara erişmek vb. için hedefleyen yaygın bir siber saldırıdır, ancak web sitenizi değiştirmek ve güvenliğini sağlamak için de kullanılabilir. 

XSS Nedir?

Cross-site scripting veya XSS, genellikle web uygulamalarında bulunan bir tür güvenlik açığıdır. XSS, bilgisayar korsanlarının diğer kullanıcılar tarafından görüntülenen web sayfalarına istemci tarafı komut dosyaları eklemesine olanak tanır ve aynı kaynak ilkesi gibi erişim denetimi atlamak için kullanılabilir.

Siteler arası komut dosyası çalıştırma saldırıları için yaygın olarak kullanılan savunmasız web uygulamaları forumlar, mesaj panoları ve yorumlara izin veren web sayfalarıdır. Kullanıcı girişi temizlenmemişse, VBScript, ActiveX, Flash, JavaScript ve CSS’de de XSS saldırıları mümkündür.

XSS Saldırısı Nasıl Çalışır?

Tipik bir XSS saldırısının iki aşaması vardır:

Birinci adımın çalışması için savunmasız web sitesinin sayfalarına doğrudan temizlenmemiş kullanıcı girdisi eklemesi gerekir. Bilgisayar korsanı daha sonra web sayfasına hedeflenen kişinin tarayıcısı tarafından kaynak kod olarak kabul edilen kötü amaçlı bir kod ekler.

Sosyal mühendisliği kullanarak kullanıcıyı yükü kendisinin yürütmesi için çekmeye dayanan başka XSS saldırıları da vardır.

XSS Neden Tehlikelidir?

XSS güvenlik açıkları, SQL enjeksiyon güvenlik açıklarından daha az tehlikeli olarak algılansa da, XSS saldırılarının, özellikle de JavaScript’e dayanan depolanmış XSS saldırılarının sonuçları çok tehlikeli olabilir:

XSS Türleri

Farklı XSS türleri vardır ve her birinin farklı bir etkisi vardır. Bunları tek tek ele alalım:

1. Depolanan XSS

Kalıcı XSS olarak da bilinen Stored XSS, kötü amaçlı komut dosyasının hedeflenen sunucuya kaydedildiği bir XSS türüdür. Komut dosyasını bir sunucuya kaydettikten sonra bilgisayar korsanının tek yapması gereken, kurbanların bu sunucudaki kötü amaçlı komut dosyasını içeren web sayfasını görüntülemesini beklemektir. Bir kurban bu sayfayı görüntülediğinde, kötü amaçlı komut dosyası tarayıcılarında yürütülür.

Saklanan XSS, tek bir yük ile birçok kurbana saldırılabileceğinden tehlikeli bir XSS türüdür. Kurbanların normalde güvenilen bir web sitesine erişmenin yanı sıra herhangi bir ekstra adım atması gerekmez.

2. Reflected XSS

Reflected XSS, kötü amaçlı yükün bir web sitesine yapılan isteğin bir parçası olması durumudur. Bu saldırının başarılı olması için kurbanın bir bağlantıya tıklaması gerekir. Bilgisayar korsanı, kurbanı e-posta veya başka bir mesaj türüyle bir bağlantıya tıklaması için kandırmaya çalışabilir. 

3. DOM tabanlı XSS

JavaScript bir bilgisayar korsanından veri alıp bir havuza aktardığında DOM tabanlı bir XSS güvenlik açığı oluşur. Belge Nesne Modeli veya DOM, JavaScript’in bir web sayfasının HTML’si ile etkileşime girebildiği bir arayüzdür. Havuz, bir XSS saldırısı sırasında kötü amaçlı bir komut dosyası çalıştırabilen bir JavaScript işlevi veya DOM nesnesidir. DOM tabanlı XSS, genellikle kurbanı bir bağlantıya tıklaması için kandırarak elde edilen reflected XSS gibidir.

Bu tür saldırılar arasındaki fark, yansıyan XSS ile yükün yanıt sayfasına yerleştirilmesi ve DOM tabanlı XSS ile bunun, sayfada bulunan istemci tarafı kodunda gerçekleşmesidir.

4. Self XSS

Self XSS saldırısı sırasında kurban, web tarayıcılarında kötü amaçlı kod çalıştırması için kandırılır. Bilgisayar korsanı kurbana kötü amaçlı kod gönderir ve kurbanın daha sonra bu kodu yürütmek için tarayıcıya yapıştırması gerekir. Bu tür XSS’nin başarılı olması için kurbanın bilgisayar korsanı tarafından sağlanan birden fazla adımı atması gerekir.

XSS Ne İçin Kullanılabilir?

Bilgisayar korsanları, aşağıda paylaşılan etkinlikleri gerçekleştirebilmek için siteler arası komut dosyası çalıştırma güvenlik açığından yararlanabilir:

Kullanıcının oturumunu ele geçirme: Çoğu çevrimiçi uygulama, kullanıcının birçok HTTP isteğinde tanımlanabilmesi için kullanıcı oturumlarını takip eder. Oturum tanımlama bilgileri, oturumları tanımlamak için kullanılır. Set-Cookie başlığı, bir uygulamada başarılı bir şekilde oturum açtığınızda, sunucu tarafından size bir oturum tanımlama bilgisi göndermek için kullanılır. Artık uygulamada bir sayfa görüntülediğinizde veya bir form gönderdiğinizde, çerez (artık tarayıcıda tutuluyor) sunucuya yapılan tüm isteklere dahil edilir. Bu şekilde sunucu sizi tanır. Bilgisayar korsanları, gerçek kullanıcının kimliğine bürünerek ve mevcut web oturumuna erişim sağlayarak bir kullanıcının oturumunu ele geçirmek için XSS kullanabilir.

Yetkisiz etkinlikler gerçekleştirme: HTTPOnly tanımlama bilgisi özelliği ayarlanmışsa, bir bilgisayar korsanı JavaScript kullanarak tanımlama bilgilerini çalamaz. Ancak bilgisayar korsanı yine de XSS saldırısı aracılığıyla kullanıcı adına program içinde illegal işlemler yapabilir.

Kullanıcı kimlik bilgilerini çalmak için kimlik avı: XSS, savunmasız web sitesine bir form enjekte etmek ve bu formu kullanarak kullanıcı kimlik bilgilerini toplamak için de kullanılabilir. Buna kimlik avı denir.

Bir tuş kaydedici enjekte ederek tuş vuruşlarını yakalamak: Bilgisayar korsanı, savunmasız web sayfasına bir JavaScript tuş kaydedici ekleyebilir ve mevcut sayfadaki kullanıcının tüm tuş vuruşlarını yakalayabilir. Bu tür bir saldırı XSS ​​kullanılarak yapılabilir.

Hassas bilgileri çalmak: Kullanıcının mevcut oturumundan hassas bilgileri çalmak, bir XSS saldırısının gerçekleştirebileceği başka bir tehlikeli davranıştır. Bu yüzden bir çevrimiçi bankacılık uygulamasının XSS’ye karşı savunmasız olduğunu ve bilgisayar korsanının mevcut bakiyeye, işlem ayrıntılarına, kişisel verilere vb. erişimi olduğunu varsayabilirsiniz.

Cross-Site Scripting Zafiyeti Nasıl Giderilir?

XSS güvenlik açıklarını tespit etmek ve düzeltmek kolay değildir. Bununla birlikte, sağlam geliştirme uygulamalarını takip etmek ve güvenliğe öncelik vermek, sitenizi potansiyel olarak milyonlara mal olan yıkıcı siber saldırılardan ve ihlallerden kurtarabilir.

Bir geliştirici olarak XSS saldırılarını önlemeye yönelik bazı ipuçları aşağıdaki şekildedir:

XSS ve CSRF Arasındaki Fark Nedir?

Siteler arası komut dosyası çalıştırma (XSS olarak da bilinir), bir bilgisayar korsanının kurbanın tarayıcısında rastgele JavaScript çalıştırmasına olanak tanır.

Bilgisayar korsanı, savunmasız bir kullanıcının yapmak istemediği bir şeyi yapmasını sağlamak için cross-site request forgery (veya CSRF) kullanabilir.

CSRF genellikle bir kullanıcının tamamlayabileceği eylemlerin yalnızca bir bölümünü etkiler. Birçok uygulama genel olarak CSRF korumaları uygular, ancak bir veya iki eylem savunmasız kalır. Başarılı bir XSS saldırısı ise, genellikle bir kullanıcıyı, güvenlik açığının bulunduğu özellikten bağımsız olarak, kullanıcının yapabileceği herhangi bir eylemi gerçekleştirmeye ikna edebilir.

CSRF normalde bir kullanıcının eylemlerinin yalnızca küçük bir yüzdesini etkiler. Pek çok uygulamada CSRF korumaları mevcuttur, ancak bir veya iki işlem hala hassastır. Buna karşılık, başarılı bir XSS saldırısı, bir kullanıcıyı, güvenlik açığının oluştuğu özellikten bağımsız olarak kullanıcının yapabileceği herhangi bir eylemi gerçekleştirmeye ikna edebilir.

XSS ve SQL Enjeksiyonu Arasındaki Fark Nedir?

SQL Injection, bilgisayar korsanları tarafından kullanılan ve bir bilgisayar korsanının bir web sayfası girişi aracılığıyla SQL sorgularına kötü amaçlı kod eklediği başka bir tekniktir. Bu enjeksiyon, bilgisayar korsanının kullanıcının sistemini kesmesine ve genel olarak bilgisayar korsanlarının başka türlü elde edemeyecekleri verilere erişmesine izin verir. Bilgisayar korsanları, kullanıcının sahip olmadığı bilgilere erişebilir ve bu programları değiştirerek sonunda programın içeriğini değiştirebilir. Bilgisayar korsanları, bu tür bilgisayar korsanlığını çeşitli yöntemlerle gerçekleştirebilir ve bunların tümü kullanıcı bilgilerine erişim sağlamada oldukça başarılı olabilir.

XSS ve SQL enjeksiyon yöntemlerinin ikisi de bilgisayar korsanları arasında yaygındır, fakat ikisi arasında bazı farklar vardır:

Exit mobile version