DOM Tabanlı Güvenlik Açıkları / DOM-BASED VULNERABILITIES

'Moon

Yeni üye
23 Eyl 2022
42
52

DOM Nedir?

dom-based-xss-vulnerability_light-copy-1024x576.png


Belge Nesne Modeli (DOM), bir web tarayıcısının sayfadaki öğelerin hiyerarşik temsilidir. Web siteleri, DOM'un düğümlerini ve nesnelerini ve bunların özelliklerini değiştirmek için JavaScript'i kullanabilir. DOM manipülasyonu kendi başına bir problem değildir. Aslında, modern web sitelerinin nasıl çalıştığının ayrılmaz bir parçasıdır. Ancak, verileri güvenli olmayan bir şekilde işleyen JavaScript, çeşitli saldırılara olanak sağlayabilir. DOM tabanlı güvenlik açıkları, bir web sitesi, kaynak olarak bilinen, saldırgan tarafından kontrol edilebilen bir değeri alan ve bunu havuz olarak bilinen tehlikeli bir işleve aktaran JavaScript içerdiğinde ortaya çıkar.
Temel olarak, DOM tabanlı güvenlik açıkları, bir web sitesi verileri bir kaynaktan bir havuza aktardığında ortaya çıkar ve bu havuz daha sonra verileri müşterinin oturumu bağlamında güvenli olmayan bir şekilde işler.
En yaygın kaynak, genellikle nesneyle erişilen URL'dir. Saldırgan, kurbanı savunmasız bir sayfaya sorgu dizesinde ve URL'nin parçalanmış kısımlarında bir yük ile göndermek için bir bağlantı oluşturabilir. Aşağıdaki kodu göz önünde bulundurun:

JavaScript:
goto = location.hash.slice(1)
if (goto.startsWith('https:')) {
  location = goto;
}

Kaynak güvenli olmayan bir şekilde işlendiğinden, bu , DOM tabanlı açık yeniden yönlendirmeye karşı savunmasızdır . 'location.hashURL', ile başlayan bir karma parça içeriyorsa https:, bu kod özelliğin değerini çıkarır. Saldırgan, aşağıdaki URL'yi oluşturarak bu güvenlik açığından yararlanabilir: Bir kurban bu URL'yi ziyaret ettiğinde, JavaScript özelliğin değerini 'location' kurbanı 'https://www.evil-user.netotomatik/' olarak kötü amaçlı siteye yönlendiren olarak ayarlar. Bu davranış, örneğin bir kimlik avı saldırısı oluşturmak için kolayca kullanılabilir.

DOM Tabanlı Açıklar Nasıl Önlenir?
DOM tabanlı saldırı tehdidini tamamen ortadan kaldırmak için yapabileceğiniz tek bir işlem yoktur. Bununla birlikte, genel olarak konuşursak, DOM tabanlı güvenlik açıklarından kaçınmanın en etkili yolu, güvenilmeyen herhangi bir kaynaktan gelen verilerin herhangi bir havuza iletilen değeri dinamik olarak değiştirmesine izin vermekten kaçınmaktır.
Uygulamanın istenen işlevselliği, bu davranışın kaçınılmaz olduğu anlamına geliyorsa, istemci tarafı kodu içinde savunmalar uygulanmalıdır. Birçok durumda ilgili veriler, yalnızca güvenli olduğu bilinen içeriğe izin verilerek beyaz liste bazında doğrulanabilir. Diğer durumlarda, verileri sterilize etmek veya kodlamak gerekli olacaktır. Bu, karmaşık bir görev olabilir ve verilerin ekleneceği bağlama bağlı olarak, uygun sırayla JavaScript çıkışı, HTML kodlaması ve URL kodlamasının bir kombinasyonunu içerebilir.


DOM Hırsızlığı
XSS-attacks-what-is-cross-site-scripting.png

DOM gizleme, DOM'u manipüle etmek ve sonuç olarak web sitesindeki JavaScript davranışını değiştirmek için bir sayfaya HTML enjekte ettiğiniz gelişmiş bir tekniktir. DOM gizlemenin en yaygın biçimi, genel bir değişkenin üzerine yazmak için bir bağlantı öğesi kullanır ve bu daha sonra uygulama tarafından güvenli olmayan bir şekilde, örneğin dinamik komut dosyası URL'si oluşturmak gibi kullanılır.



Konumu okuduğunuz için çok teşekkür ederim seviliyorsunuz
Turk Hack Team üyeleri :)

34i6rgo.png


KAYNAK
DOM-based vulnerabilities | Web Security Academy
 

swarq

Katılımcı Üye
1 May 2020
335
185
Beacon Hills

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
 

Dolyetyus

Özel Üye
21 Nis 2020
1,208
677
Delft
Lab 1: Web mesajlarını kullanan DOM XSS

Bu laboratuvar basit bir web mesaj güvenlik açığını göstermektedir. Bu laboratuvarı çözmek için hedef siteye print() fonksitonunun çağrılmasına neden olan bir ileti göndermek için exploit sunucusunu kullanın.

Lab linki:
 

Dolyetyus

Özel Üye
21 Nis 2020
1,208
677
Delft
Lab 2: Web mesajları ve bir JavaScript URL'si kullanan DOM XSS

Bu laboratuvar, web mesajlaşma tarafından tetiklenen DOM tabanlı bir yeniden yönlendirme güvenlik açığı içermektedir. Bu laboratuvarı çözmek için exploit sunucusunda bu güvenlik açığından yararlanan ve print() fonksiyonunu çağıran bir HTML sayfası oluşturun.

Lab linki:
 

Dolyetyus

Özel Üye
21 Nis 2020
1,208
677
Delft
Lab 3: Web mesajları ve JSON.parse kullanan DOM XSS

Bu laboratuvar, web mesajlaşmasını kullanır ve mesajı JSON olarak ayrıştırır. Laboratuvarı çözmek için exploit sunucusunda bu güvenlik açığından yararlanan ve print() fonksiyonunu çağıran bir HTML sayfası oluşturun.

Lab linki:
 

Dolyetyus

Özel Üye
21 Nis 2020
1,208
677
Delft
Lab 4: DOM tabanlı açık yönlendirme

Bu laboratuvar DOM tabanlı bir açık yeniden yönlendirme güvenlik açığı içermektedir. Bu laboratuvarı çözmek için bu güvenlik açığından yararlanın ve kurbanı exploit sunucusuna yönlendirin.

Lab linki:
 

Dolyetyus

Özel Üye
21 Nis 2020
1,208
677
Delft
Lab 5: DOM tabanlı çerez manipülasyonu

Bu laboratuvar DOM tabanlı istemci tarafı çerezlerini (cookies) işlemeyi gösterir. Bu laboratuvarı çözmek için farklı bir sayfada XSS'e neden olacak bir çerez enjekte edin ve print() fonksiyonunu çağırın. Kurbanı doğru sayfalara yönlendirmek için exploit sunucusunu kullanmanız gerekecek.

Lab linki:
 

Dolyetyus

Özel Üye
21 Nis 2020
1,208
677
Delft
Lab 6: XSS'yi etkinleştirmek için DOM hırsızlığı yararlanma

Bu laboratuvar bir DOM hırsızlığı açığını içermektedir. Yorum işlevi "safe" HTML'ye izin verir. Bu laboratuvarı çözmek için alert() işlevini çağırma işlevi için XSS kullanan ve bir değişkeni gizleyen bir HTML enjeksiyonu oluşturun.

Not: Bu laboratuvar için amaçlanan çözümün yalnızca Chrome'da çalışacağını lütfen unutmayın.


Lab linki:
 

Dolyetyus

Özel Üye
21 Nis 2020
1,208
677
Delft
Lab 7: HTML filtrelerini atlamak için DOM özniteliklerini gizleme

Bu laboratuvar, DOM hırsızlığına karşı savunmasız olan HTMLJanitor library'sini kullanır. Bu laboratuvarı çözmek için DOM gizlemeyi kullanan bir vektör oluşturun ve bu vektör filtreyi atlatsın ve print() fonksiyonunu çağıran bir vektörü enjekte etsin. Vektörünüzün kurbanın tarayıcısında otomatik olarak çalıştırılmasını sağlamak için exploit sunucusunu kullanmanız gerekebilir.

Not: Bu laboratuvar için amaçlanan çözüm Firefox'ta çalışmaz. Bu laboratuvarı tamamlamak için Chrome kullanmanızı öneririz.


Lab linki:
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.