hacktricks/pentesting-web/xss-cross-site-scripting/dom-invader.md

113 lines
8.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# DOM İstilacısı
<details>
<summary><strong>AWS hacklemeyi sıfırdan kahraman seviyesine öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong> ile!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na (https://github.com/sponsors/carlospolop) göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**PEASS Ailesi'ni**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'da **takip edin**.
* **Hacking püf noktalarınızı göndererek HackTricks ve HackTricks Cloud** github depolarına PR göndererek paylaşın.
</details>
## DOM İstilacısı
DOM İstilacısı, Burp'un yerleşik tarayıcısına yüklenen bir tarayıcı aracıdır. Web mesajları ve prototip kirliliği de dahil olmak üzere çeşitli kaynaklar ve sızıntılar kullanarak **DOM XSS zafiyetlerini tespit etmede yardımcı olur**. Aracın uzantı olarak önceden yüklenmiştir.
DOM İstilacısı, aşağıdakileri sağlayan tarayıcının DevTools panelinde bir sekme entegre eder:
1. DOM XSS testi için bir web sayfasındaki **kontrol edilebilir sızıntıların tanımlanması**, bağlam ve temizleme ayrıntıları sağlar.
2. DOM XSS testi için `postMessage()` yöntemi aracılığıyla gönderilen **web mesajlarının kaydedilmesi, düzenlenmesi ve yeniden gönderilmesi**. DOM İstilacısı ayrıca özel olarak oluşturulmuş web mesajlarını kullanarak zafiyetleri otomatik olarak tespit edebilir.
3. **İstemci tarafı prototip kirliliği** kaynaklarının tespiti ve riskli sızıntılara gönderilen kontrol edilebilir cihazların taranması.
4. **DOM clobbering zafiyetlerinin tanımlanması**.
### Etkinleştirme
Burp'un yerleşik tarayıcısında **Burp uzantısı**na gidin ve etkinleştirin:
<figure><img src="../../.gitbook/assets/image (1129).png" alt=""><figcaption></figcaption></figure>
Şimdi sayfayı yenileyin ve **Dev Araçlar**'da **DOM İstilacısı sekmesini** bulacaksınız:
<figure><img src="../../.gitbook/assets/image (695).png" alt=""><figcaption></figcaption></figure>
### Bir Kanarya Enjekte Edin
Önceki görüntüde **rastgele bir karakter grubu olan Kanarya'yı** görebilirsiniz. Şimdi bunu web'in farklı bölümlerine (parametreler, formlar, url...) enjekte etmeye başlamalısınız ve her seferinde aramaya tıklamalısınız. DOM İstilacısı, **kanaryanın ilginç bir sızıntıda sona erip ermediğini** kontrol edecektir.
Ayrıca, **URL parametrelerini enjekte et** ve Formları enjekte et** seçenekleri, her bulduğu **URL** parametresine ve **form**a **kanaryayı enjekte ederek** otomatik olarak yeni bir sekme açacaktır.
### Boş Bir Kanarya Enjekte Edin
Eğer sayfanın sahip olabileceği potansiyel sızıntıları bulmak istiyorsanız, bunlar sömürülebilir olmasa bile **boş bir kanarya arayabilirsiniz**.
### Mesajlar Gönderme
DOM İstilacısı, web mesajlarını kullanarak DOM XSS testi yapmaya olanak tanır ve şu özelliklere sahiptir:
1. `postMessage()` ile gönderilen **web mesajlarının kaydedilmesi**, Burp Proxy'nin HTTP istek/yanıt geçmişi kaydı gibi.
2. DOM XSS için manuel olarak test etmek için web mesajlarını **düzenleme** ve **yeniden gönderme**, Burp Repeater'ın işlevine benzer.
3. DOM XSS'yi sorgulamak için **otomatik değişiklik** ve web mesajlarının gönderilmesi.
#### Mesaj ayrıntıları
Her mesaj hakkında ayrıntılı bilgi, mesajın üzerine tıklanarak görüntülenebilir ve bu bilgiler, istemci tarafındaki JavaScript'in mesajın `origin`, `data` veya `source` özelliklerine erişip erişmediğini içerir.
* **`origin`** : Mesajın **köken bilgisi kontrol edilmediyse**, olay işleyicisine **herhangi bir harici alandan çapraz kökenli mesajlar gönderebilirsiniz**. Ancak kontrol edilirse yine de güvensiz olabilir.
* **`data`**: Bu, yükün gönderildiği yerdir. Bu veri kullanılmıyorsa, sızıntı işe yaramaz.
* **`source`**: Genellikle bir iframe'e referans olan kaynak özelliğinin, köken yerine doğrulandığını değerlendirir. Bu kontrol edilse bile, doğrulamanın atlatılamayacağını garanti etmez.
#### Bir mesajı yanıtla
1. **Mesajlar** görünümünden herhangi bir mesaja tıklayarak mesaj ayrıntıları iletişim kutusunu açın.
2. Gerekirse **Veri** alanını düzenleyin.
3. **Gönder**e tıklayın.
### Prototip Kirliliği
DOM İstilacısı ayrıca **Prototip Kirliliği zafiyetlerini arayabilir**. İlk olarak, bunu etkinleştirmeniz gerekir:
<figure><img src="../../.gitbook/assets/image (1026).png" alt=""><figcaption></figcaption></figure>
Daha sonra, **`Object.prototype`'ye keyfi özellikler eklemenizi sağlayan kaynakları arayacaktır**.
Herhangi bir şey bulunursa, **Test** düğmesi görünecek ve **bulunan kaynağı test etmek için** üzerine tıklamanız gerekecektir. Yeni bir sekme açılacak, konsolda bir nesne oluşturacak ve `testproperty`'nin var olup olmadığını kontrol edecektir:
```javascript
let b = {}
b.testproperty
```
Bir kaynak bulduğunuzda **gadget taraması yapabilirsiniz**:
1. **Tarama için gadgetları tarayın** düğmesine tıklandığında, DOM görünümünde herhangi bir belirlenmiş prototip kirliliği kaynağının yanında bulunan **Scan for gadgets** düğmesine tıklandığında, DOM Invader tarafından yeni bir sekme açılır. Ardından uygun gadget'lar için tarama başlar.
2. Aynı sekmede, tarama tamamlandıktan sonra, tanımlanan gadget'lar aracılığıyla erişilebilen herhangi bir sızıntı, **DOM** görünümünde gösterilir. Örneğin, `innerHTML` sızıntısına iletilen `html` adlı bir gadget özelliği aşağıdaki örnekte gösterilir.
## DOM clobbering
Önceki görüntüde DOM clobbering taramasının açılabileceği görülebilir. Bittiğinde, **DOM Invader DOM clobbering zafiyetlerini aramaya başlayacaktır**.
## Referanslar
* [https://portswigger.net/burp/documentation/desktop/tools/dom-invader](https://portswigger.net/burp/documentation/desktop/tools/dom-invader)
* [https://portswigger.net/burp/documentation/desktop/tools/dom-invader/enabling](https://portswigger.net/burp/documentation/desktop/tools/dom-invader/enabling)
* [https://portswigger.net/burp/documentation/desktop/tools/dom-invader/dom-xss](https://portswigger.net/burp/documentation/desktop/tools/dom-invader/dom-xss)
* [https://portswigger.net/burp/documentation/desktop/tools/dom-invader/web-messages](https://portswigger.net/burp/documentation/desktop/tools/dom-invader/web-messages)
* [https://portswigger.net/burp/documentation/desktop/tools/dom-invader/prototype-pollution](https://portswigger.net/burp/documentation/desktop/tools/dom-invader/prototype-pollution)
* [https://portswigger.net/burp/documentation/desktop/tools/dom-invader/dom-clobbering](https://portswigger.net/burp/documentation/desktop/tools/dom-invader/dom-clobbering)
<details>
<summary><strong>Sıfırdan kahraman olmak için AWS hackleme öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
HackTricks'ı desteklemenin diğer yolları:
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu
* **💬 [Discord grubuna](https://discord.gg/hRep4RUj7f) katılın veya [telegram grubuna](https://t.me/peass) katılın veya** bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**
* **Hacking hilelerinizi paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>