Öncelikle bu konuyu okuyunuz:https://www.turkhackteam.org/konula...k-aciklari-dom-based-vulnerabilities.2028859/
Reflected XSS
Bu bölümde, XSS açıklarını açıklayacağız, Reflected XSS saldırılarının etkilerini tanımlayacağız ve Reflected XSS güvenlik açıklarını bulmanın yollarını anlatacağız.
XSS nedir?
XSS, bir uygulamanın bir HTTP isteğinde veri aldığı ve bu veriyi hemen yanıtta güvensiz bir şekilde içerdiği durumlarda ortaya çıkar.
Bir web sitesinin, kullanıcı tarafından sağlanan arama terimini bir URL parametresinde aldığını varsayalım:
Uygulama, bu URL'ye yanıt olarak sağlanan arama terimini yansıtır:
<p>You searched for: gift</p>
Uygulamanın veriye ek bir işlem uygulamadığı varsayılırsa, bir saldırgan şu şekilde bir saldırı gerçekleştirebilir:
https://insecure-website.com/search?term=<script>/*+Bad+stuff+here...+*/</script>
Bu URL, şu yanıta neden olur:
<p>You searched for: <script>/* Bad stuff here... */</script></p>
Eğer uygulamanın diğer bir kullanıcısı saldırganın URL'sini isterse, saldırgan tarafından sağlanan betik kurban kullanıcının tarayıcısında çalıştırılacak, uygulama oturumlarının bağlamında.
Reflected XSS saldırılarının etkileri
Bir saldırgan kurbanın tarayıcısında çalıştırılan bir betiği kontrol edebilirse, genellikle o kullanıcıyı tamamen ele geçirebilir. Saldırganların yapabilecekleri diğer şeyler arasında şunlar yer alır:
- Kullanıcının uygulama içinde yapabildiği herhangi bir eylemi gerçekleştirmek.
- Kullanıcının görüntüleyebildiği herhangi bir bilgiyi görüntülemek.
- Kullanıcının değiştirebildiği herhangi bir bilgiyi değiştirmek.
- Başlangıçtaki kurban kullanıcıdan gelmiş gibi görünen, diğer uygulama kullanıcılarıyla etkileşime girmeyi de içeren kötü amaçlı saldırılar başlatmak.
Bir saldırganın, XSS saldırısını teslim etmek için bir kurban kullanıcıyı kontrol ettikleri bir istekte bulunmaya yönlendirmesi için çeşitli yollar vardır. Bunlar arasında saldırganın kontrol ettiği bir web sitesinde bağlantılar yerleştirmek, içerik oluşturmaya izin veren başka bir web sitesinde bağlantılar yerleştirmek veya bir e-posta, tweet veya diğer mesajlarda bir bağlantı göndermek yer alır. Saldırı, uygulamanın bilinen bir kullanıcısına doğrudan yönelik olabilir veya uygulamanın herhangi bir kullanıcısına karşı ayrım gözetmeyen bir saldırı olabilir.
Saldırının teslimi için harici bir mekanizmaya ihtiyaç duyulması, XSS'nin etkisinin, kendi kendine yeterli bir saldırının hassas uygulama içinde teslim edilebildiği depolanmış XSS'den genellikle daha az ciddi olduğu anlamına gelir.
Farklı bağlamlarda Reflected XSS
Yansıtılmış siteler arası betik çalıştırmanın birçok farklı türü vardır. Yanıttaki yansıtılan verinin konumu, istismar etmek için gereken yük türünü belirler ve aynı zamanda güvenlik açığının etkisini de etkileyebilir.
Ayrıca, uygulama yansıtılmadan önce gönderilen veriye herhangi bir doğrulama veya diğer işlem uyguluyorsa, bu genellikle çalışan bir XSS saldırısı teslim etmek için gereken XSS yük türünü etkiler.
Reflected XSS güvenlik açıklarını bulmak ve test etmek için
Yansıtılmış siteler arası betik çalıştırma güvenlik açıklarının büyük çoğunluğu, Burp Suite'in web güvenlik açığı tarayıcısı kullanılarak hızlı ve güvenilir bir şekilde bulunabilir.
Reflected XSS güvenlik açıklarını manuel olarak test etmek için şu adımlar izlenmelidir:
- Her giriş noktasını test edin. Uygulamanın HTTP isteklerindeki verilerin bulunduğu her giriş noktasını ayrı ayrı test edin. Bunlar, URL sorgu dizgisindeki ve mesaj gövdesindeki parametreleri veya diğer verileri, URL dosya yolunu ve HTTP üstbilgilerini içerir. HTTP üstbilgileri ile tetiklenebilen XSS benzeri davranışlar pratikte istismar edilemeyebilir.
- Rastgele alfasayısal değerler gönderin. Her giriş noktası için, benzersiz bir rastgele değer gönderin ve bu değerin yanıtta yansıtılıp yansıtılmadığını belirleyin. Değer, çoğu giriş doğrulamasından geçebilecek şekilde tasarlanmalıdır, bu nedenle oldukça kısa olmalı ve yalnızca alfasayısal karakterler içermelidir. Ancak yanıtta kazara eşleşmelerin çok düşük olasılıkla gerçekleşmesi için yeterince uzun olmalıdır. Yaklaşık 8 karakterlik rastgele alfasayısal bir değer genellikle idealdir. Burp Intruder'ın rastgele üretilen onaltılık değerlerle sayı yüklerini [Burp Intruder payload types] kullanarak uygun rastgele değerler oluşturabilirsiniz. Ve yanıtlarda gönderilen değeri içeren yerleri otomatik olarak işaretlemek için Burp Intruder'ın grep yükleri ayarlarını kullanabilirsiniz.
- Yansımanın bağlamını belirleyin. Yanıttaki rastgele değerin yansıtıldığı her konum için bağlamını belirleyin. Bu, HTML etiketleri arasındaki metin olabilir, alıntılanmış olabilecek bir etiket özniteliği içinde olabilir, bir JavaScript dizgesi içinde olabilir, vb.
- Bir aday payload test edin. Yansımanın bağlamına bağlı olarak, değiştirilmeden yanıtta yansıtılırsa JavaScript yürütülmesini tetikleyecek ilk aday XSS yükünü test edin. Yükleri test etmenin en kolay yolu, isteği Burp Tekrarlayıcı'ya göndermek, aday yükü eklemek için isteği değiştirmek, isteği göndermek ve ardından yükün çalışıp çalışmadığını görmek için yanıtı incelemektir. Verimli çalışmanın bir yolu, isteğinde orijinal rastgele değeri bırakmak ve aday XSS yükünü ondan önce veya sonra yerleştirmektir. Ardından rastgele değeri Burp Tekrarlayıcı'nın yanıt görünümünde arama terimi olarak ayarlayın. Burp, arama teriminin göründüğü her yeri vurgulayacak, böylece yansıtmayı hızlı bir şekilde bulmanızı sağlayacaktır.
- Alternatif yükler test edin. Aday XSS yükü uygulama tarafından değiştirildiyse veya tamamen engellendiyse, yansımanın bağlamına ve gerçekleştirilen giriş doğrulamasının türüne bağlı olarak çalışan bir XSS saldırısı teslim etmek için alternatif yükleri ve teknikleri test etmeniz gerekecektir. Daha fazla ayrıntı için, siteler arası betik çalıştırma bağlamlarına bakın.
- Saldırıyı bir tarayıcıda test edin. Son olarak, Burp Tekrarlayıcı içinde çalışıyor gibi görünen bir yük bulduysanız, saldırıyı gerçek bir tarayıcıya (URL'yi adres çubuğuna yapıştırarak veya isteği Burp Aracı'nın kesme görünümünde değiştirerek) aktarın ve enjekte edilen JavaScript'in gerçekten yürütülüp yürütülmediğini görün. Çoğu zaman, eğer saldırı başarılı olursa tarayıcı içinde görünür bir açılır pencere tetikleyecek basit bir JavaScript kodu çalıştırmak en iyisidir, örneğin
Kod:
alert(document.domain).
Yansıtılmış siteler arası betik çalıştırma hakkında sık sorulan sorular
Reflected XSS ile depolanmış XSS arasındaki fark nedir? Reflected XSS, bir uygulamanın bir HTTP isteğinden bazı girdileri aldığı ve bunları hemen yanıta güvensiz bir şekilde yerleştirdiği durumlarda ortaya çıkar. Depolanmış XSS'de ise uygulama girdiyi daha sonraki bir yanıta güvensiz bir şekilde yerleştirmek için depolar.
Reflected XSS ile kendi kendine XSS arasındaki fark nedir? Kendi kendine XSS, normal Reflected XSS'ye benzer uygulama davranışlarını içerir, ancak kurbanın kendisinin XSS yükünü tarayıcısından gönderdiği durumlar haricinde normal yollarla tetiklenemez. Kendi kendine XSS saldırısı teslim etmek genellikle kurbanı saldırganın sağladığı girdileri tarayıcılarına yapıştırmaya sosyal mühendislik yoluyla ikna etmeyi içerir. Bu nedenle genellikle düşük etkili bir sorun olarak kabul edilir.
Kaynak: What is reflected XSS (cross-site scripting)? Tutorial & Examples | Web Security Academy
Moderatör tarafında düzenlendi:
