Cross-Site Scripting(XSS), birçok web uygulamasını etkileyen yaygın bir güvenlik açığıdır. XSS’in arkasındaki tehlike bir saldırganın bir web sitesine içerik enjekte etmesini ve görüntülenme şeklini değiştirmesine olanak tanır ve kurban tarayıcısının sayfayı yüklerken saldırganın sağladığı kodu yürütmesine yol açar.
Genel olarak XSS güvenlik açıkları, sosyal mühendislik aracılığıyla veya kullanıcıların belirli bir sayfayı ziyaret etmesini bekleyerek güvenlik açığını tetiklemek için kullanıcı tarafından bir takım etkileşim gerektirir. Bu nedenle genellikle geliştiriciler tarafından ciddiye alınmaz, ancak düzeltilmeden bırakılırsa çok tehlikeli olabilir.
WordPress wp-admin panelinde yeni bir yazı eklediğinizi düşünün. İstenilen bir XSS güvenlik açığı bulunan (aşağıda açıklanmıştır) bir eklenti kullanıyorsanız, wp-admin panelinde tarayıcınızı yeni bir yönetici kullanıcısı oluşturmaya zorlayabilir veya bir yazı düzenleyip başka benzer işlemleri yapabilir.
Bir XSS güvenlik açığı, bugünün masaüstümüzde sahip olduğumuz tarayıcılarımız en önemli yazılımın neredeyse tüm denetimini bir saldırgana verir.
XSS: Enjeksiyon Güvenlik Açığı
Herhangi bir web sitesi veya uygulamanın çeşitli girdileri vardır. Form alanlarından URL’nin kendisine kadar uzanır ve bu kod temel kod tarafından işlenecek veriler haline gelecektir. Bu verinin basit bir örneği, formumuza adını, kullanıcı adını, şifresini veya başka bir girdiyi gönderirken verilir:
Belki de karşılaşabileceğiniz en temel İlk Kanıtı (PoC), sayfadaki bir kusur sizi uyaran bir açılır pencere oluşturan çok basit bir komut dosyası etiketinin kullanılmasını içerir. Bu Kod şöyle görünür:
<script>alert('THIS IS AN XSS VULNERABILITY!!!')</script> -----------------------------------------------------------------------------------------------------------
Bu örnek aracılığıyla, bir javascript bloğu sınırlandıran bir HTML etiketi çifti kullanıyorsunuzdur. İşlev çağrısı, kutuyu aşağıdaki cümle ile birlikte gösteriyor: BU, XSS açığıdır.
Bu girdi, uygulama tarafından kabul edildiğinde ve kullanıcıya yankılandığında, kullanıcının tarayıcısı tarafından değerlendirilir ve sanki web sitesi kodunun yerinde olduğu gibi çalıştırılır. O anda oluşturulan web sitesinin bir parçası haline gelir ve saldırgana bir takım saldırı hakları verir
Tüm XSS güvenlik açıkları aynı değildir. Çok çeşitli türleri vardır ve burada her biri için çok kapsamlı bir genel bakış sunacağız
Sunucu tarafı kodu (Java, PHP, .NET vb.) Nedeniyle:
Geleneksel XSS saldırıları:
1. Yansıtılan (Kalıcı Olmayan) – zayıf bir web sitesine, hazırlanmış bir girdi ile bir bağlantı açarak, yük kullanıcıya yankılandığında gerçekleşir.
2. Saklanmış (Kalıcı) – yük, sunucu tarafında depolandığında ve her kullanıcının isteği üzerine bir sayfaya geldiğinde gerçekleşir.
İstemci tarafı kodu (Javascript, Visual Basic, Flash vb.) Nedeniyle:
DOM tabanlı XSS olarak da bilinir:
3.Reflected (Non-Persistent) – sunucu tarafıyla aynıdır, ancak bu süre, tarayıcı tarafından işlenen kod nedeniyle yüklenebilir.
4. Saklanmış (Sürekli) – sunucu tarafıyla aynıdır, ancak bu sefer yük, tarayıcı deposunu kullanarak, istemci makinede depolanır.
Altyapıdan (tarayıcı, eklentiler, sunucu vb.) Kaynaklanmaktadır:
Çok nadir fakat daha tehlikeli:
5. İstemci tarafı altyapısı – yükün, tarayıcının dahili öğeleriyle bir ilgisi olduğunda, XSS filtresi veya diğer temel işlevleri gibi gerçekleşir.
6. Sunucu tarafı altyapısı – web sunucusu, yanıt organlarının değiştirilmesine izin veren kusurlu bir istek işlenmesinden sorumlu olduğunda ortaya çıkar.
7. Şebeke – istemci ve sunucu arasındaki iletişimi kurcalamak ve böylece şebeke paketini yükle yüklemek mümkün olduğunda ortaya çıkar.
Kullanıcıdan kaynaklandı:
Dolandırıcılıklarda yaygın olarak görülür.
8. SM XSS – kullanıcı genelde sosyal mühendislik vasıtasıyla kendisini kesmek için tarayıcıda yükü enjekte etmekle yükümlü olduğu zaman meydana gelir.
“Dom Based XSS” konusunu ayrıntılı anlatacam bence önemli bir xss açığı 🙂
Dom Based xss okumak için Tıklayın