Siteler arası komut dosyası çalıştırma/ Çapraz kod çalıştırma Cross Site Scripting (XSS) olarak adlandıran genelde web uygulamalarında bulunan, saldırganın farklı bir kullanıcının tarayıcısında zarar verecek bir kod ekleme saldırısı da denilebilir.
Resim-1
XSS güvenlik açıkları normalde saldırganın hedef kullanıcının gerçekleştirebileceği tüm eylemleri gerçekleştirmesine ve kullanıcının verilerine erişmesine izin verir. Hedef kullanıcının uygulama içinde erişim yetkisi varsa, saldırgan uygulamanın kontrolünü hedef gibi yönetebilir ve veriler üzerinde tam kontrol sahibi olabilir.
XSS saldırıları VBScript, ActiveX yapılabilir ama en çok HTML VE JavaScript kullanılıyor.
XSS nasıl karşılaşırız
-
XSS hedef kullanıcı tarafından çalıştırılan kötü amaçlı komut dosyası ile yapılabilir.
-
Hedef tarafından görüntülenen sayfanın link ile tıklanacak ve kullanıcın kimlik bilgilerini isteyen sahte sayfa ya da form şeklinde bir sayfa ile olabilir.
-
Hedef tarafından görüntülenen reklam içeren web sitelerinde.
-
Kullanıcıya ya da topluluğa gönderilen kötü niyetli e-postalarla XSS saldırısına maruz kalabilir.
XSS Nasıl Çalışır?
Resim-2
XSS için genelde kullanıcı adı,şifreler gibi bilgileri incelemek için saldırgan bir script dosyası yazar ve bunu web sitesine yükler. Yazılan script gizli bir katman görevi görür. Saldırgan daha sonra hedef kullanıcının tarayıcısı tarafından kaynak kod olarak anlamlandırılacak kötü amaçlı bir satır ekleyebilir. Burada önemli bir noktada olan cookie verilerinen doğru yaralanabilmektir.
Aşağıdaki komut satırları veri tabanından son yorumu alıp,HTML sayfasına ekler.
Resim-3
Bu kod çıktısının
sadece metinden oluştuğunu ve herhangi HTML veya başka bir kod içermediğini düşünelim. Artık XSS için saldırganın kötü niyetli kod içeren yorum ekleyebilir.
Resim-4
Sunucu, web sayfasını ziyaret eden kullanıcılara aşağıdaki HTML kodunu sunar:
Resim-5
Sayfa hedef kullanıcının tarayıcısına yüklendiğinde, saldırganın script dosyası yürütülür. Çoğu zaman, hedef bu durumu fark edemez.
Kullanıcıyı taklit etmek için saldırgan çerezleri bazı yollarla kendi sunucusuna gönderebilir,aşağıdaki gibi komut satırını kullanıcının tarayıcısına eklersek ;
Resim-6
Hedef tarayıcıdaki çerezleri kendimize yönlendirebiliriz.
Siteler Arası Komut Dosyası Saldırı Eklentileri
Saldırganın bir web sitesi ya da uygulama güvenliğini tehlikeye sokmak için bir XSS saldırısı yoluyla kullanabileceği genel kullanılan XSS saldırı komut listesinden bazılarına göz atalım. Kapsamlı bir listesi OWASP tarafından derlenmiştir. “https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet” linkinden eklentilere detaylı bakabilirsiniz.
-
<script> Etiketi
<script> etiketi basit bir XSS eklentisidir. Bir JavaScript kodu script etiketinin içine gömebilirsiniz .
Resim-7
-
JavaScript Etiketleri
JavaScript olay payload gibi birçok farklı eklentide kullanılabilir. Bu sıkça başvuralan XSS saldırı komutudur.
Resim-8
-
<body> Etiketi
Resim-9
-
<img> Etiketi
Bazı tarayıcılar <img> snif de bulunan JavaScript’i çalıştırır .
Resim-10
-
<iframe> Etiketi
<IFRAME> Etiketi mevcut sayfada başka bir HTML sayfası yerleştirmeyi amaçlar. Bir iframe JavaScript içerebilir, ancak iframe’deki JavaScript, tarayıcının CSP nedeniyle ana sayfanın DOM’sine erişemez. Bununla birlikte, iframe’ler kimlik avı saldırılarını kaldırmak için hala çok etkilidir.
Resim-11
-
<input> Etiketi
Bazı tarayıcılarda type itelik <input> etiket olarak ayarlanan “image” e komut dosyası gizlenebilir.
Resim-12
-
<link> Etiketi
<link< genellikle dış stil sayfaları bağlamak için kullanılır, bir komut dosyası içerebilir.
Resim-13
-
<table> Etiketi
Görüntü yerine bir komut dosyasına başvurmak için kullanılabilir.
Resim-14
-
<div> etiketi
<div> /<Table> ve benzer etiketlerdir. Arka plan belirtmek ve dolayısıyla bir senaryo gömebilirsiniz.
<!-- <div> tag XSS --
<div style="background-image: url(javascript:alert('XSS'))">
<!-- <div> tag XSS -->
<div style="width: expression(alert('XSS'));">
-
<object> etiketi
<object> Harici bir siteden bir komut dosyası eklemek için kullanılabilir.
Resim-15
Siteler Arası Komut Dosyası Saldırı Türleri
XSS saldırısı gerçekleştirmenin temel amacı, başka kullanıcıların kimliğini çalmaktır. Bunun yöntemleri anlatıldığı gibi, çerezler, makers vs. olabilir. XSS, hedef için sahte sayfaları veya formları görüntülemek için de kullanılabilir. Ancak, bu saldırıyı yapmak için bazı sınıflandırmalar mevcuttur.
- YANSIYAN XSS
Bu, saldırı kodların girilmesinden sonra kötü amaçlı sonuçlar ortaya çıkar. Yansıtılan XSS kodu kalıcı olarak kaydedilmez. Bu durumda, kötü amaçlı kod herhangi bir web sitesi sonucuna yansıtılmaktadır. Saldırı kodu sahte URL’ye veya HTTP parametrelerine eklenebilir.
Hedef kullanıcıyı farklı şekillerde etkileyebilir örneğin; sahte sayfa göstererek veya kötü amaçlı bir e-posta göndererek.
Resim-16
- SAKLANAN XSS
Bu saldırı yansıyan XSS salsırısına göre daha riskli sayılabilir ve daha fazla hasar verebilir.
Bu tür saldırılarda, kötü amaçlı kod veya komut dosyası web sunucusuna (örneğin veritabanına) kaydedilir ve kullanıcıların uygun işlevleri aradığı her seferde çalıştırılır. Bu şekilde depolanan XSS saldırısında belirili hedef kullanıcı yoktur çok sayıda kullanıcı bu saldırıdan etkilenir. Ayrıca komut dosyası web sunucusunda depolandığından, web sitesini daha uzun süre etkiler.
Depolanan XSS saldırısı gerçekleştirmek için, kötü amaçlı komut dosyası güvenlik açığı bulunan giriş formu aracılığıyla gönderilmelidir ( Örneğin, yorum alanı veya inceleme alanı). Bu şekilde uygun komut dosyası veritabanına kaydedilir ve sayfa yükünde veya uygun işlev çağrısı üzerinde yürütülür.
En son kullanıcı görüşünün yüklendiği bir sayfamız olduğunu düşünün. Bu nedenle, görüş ya da yorum alanına aşağıda gösterildiği gibi komut dosyası ile yazılacaktır.
Resim-17
En son kullanıcı görüşü sayfada görüntüleneceği için veritabanına kaydedilecek ve sayfa yükünde yürütülecektir. Bir web sitesi XSS’e karşı savunmasızsa, sayfada yükleme çerezleri içeren açılır pencere görüntülenir. Bu senaryo oldukça basit ve daha az zararlıdır. Ancak, bu komut dosyası yerine, daha zararlı bir kod girilebilir.
-
DOM XSS
Bu tür bir saldırı DOM ortamı değiştirilirken meydana gelir, ancak taraf kodu değişmez. DOM ortamı hedef kullanıcı tarayıcısında değiştirildiğinde, taraf kodu farklı şekilde çalışır.
Resim-18
XSS Test Araçları
Siteler Arası Komut Dosyası saldırısı en popüler riskli saldırılardan biri olduğundan, otomatik olarak sınamak için birçok araç vardır. Nessus ve Nikto gibi olası XSS saldırılarının güvenlik açıklarını kontrol etmek için çeşitli tarayıcılar bulabiliriz. Her ikisi de oldukça güvenilir olarak kabul edilir.
XSS’yi Önleme Yolları
Bu tür bir saldırı en tehlikeli ve riskli olanlardan biri olarak kabul edilir. Bu saldırının popülaritesi nedeniyle, onu önlemenin birçok yolu var.
Yaygın olarak kullanılan ana önleme yöntemleri şunlardır:
-
Veri doğrulama
-
Filtreleme
-
Kaçan
Kullanıcı tarafından girilen her şey tam olarak doğrulanmalıdır, çünkü kullanıcının girişi çıktıya giden yolu bulabilir. Veri doğrulama, sistemin güvenliğini sağlamak için temel olarak adlandırılabilir.
Filtreleme fikri, kullanıcının girişinde riskli anahtar kelimeler aramak ve bunları kaldırmak veya boş dizelerle değiştirmektir.
Bu anahtar kelimeler olabilir:
-
<script> </script> etiketleri
-
Javascript komutları
-
HTML işaretlemesi
Bir diğer olası önleme yöntemi ise kaçan karakterlerdir . Bu uygulamada uygun karakterler özel kodlarla değiştiriliyor. Örneğin, <kaçan karakter <gibi görünebilir. Karakterlerden kaçmak için uygun kütüphaneler bulabileceğimizi bilmek önemlidir.
Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.
Referanslar
TAGs: Cross Site Scripting nedir?,XSS nedir ?