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

114 lines
8.4 KiB
Markdown
Raw Normal View History

# DOM Invader
<details>
<summary><strong>AWS hacklemeyi sıfırdan kahramana öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile!</strong></summary>
2024-02-10 18:14:16 +00:00
HackTricks'ı desteklemenin diğer yolları:
2024-01-01 17:15:42 +00:00
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)!
2024-02-10 18:14:16 +00:00
* [**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)** takip edin.**
* **Hacking püf noktalarınızı paylaşarak PR göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>
## DOM Invader
DOM Invader, Burp'un yerleşik tarayıcısına kurulan 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 etmeye yardımcı olur**. Aracı, bir uzantı olarak önceden yüklenmiştir.
DOM Invader, 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 Invader 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ı**.
2024-02-10 18:14:16 +00:00
### Etkinleştirme
2024-02-10 18:14:16 +00:00
Burp'un yerleşik tarayıcısında **Burp uzantısı**na gidin ve etkinleştirin:
<figure><img src="../../.gitbook/assets/image (4) (1) (1) (2).png" alt=""><figcaption></figcaption></figure>
2024-02-10 18:14:16 +00:00
Şimdi sayfayı yenileyin ve **Dev Araçları**'nda **DOM Invader sekmesini** bulacaksınız:
<figure><img src="../../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
### Bir Kanarya Enjekte Edin
Önceki görüntüde **rastgele karakter grubunu görebilirsiniz, bu Kanarya'dır**. Şimdi bunu webin farklı bölümlerine (parametreler, formlar, url...) enjekte etmeye başlamalısınız ve her seferinde aramayı tıklamalısınız. DOM Invader, sömürülebilecek **ilginç bir sızıntıya** Kanarya'nın **ulaşıp ulaşmadığını kontrol edecektir**.
Ayrıca, **URL parametrelerini enjekte et** ve Formları enjekte et** seçenekleri, her **URL** parametresine ve bulduğu **form**a **Kanarya'yı enjekte ederek** otomatik olarak yeni bir sekme açacaktır.
### Boş Bir Kanarya Enjekte Edin
Eğer sayfanın potansiyel sızıntılara sahip olabileceği yerleri bulmak istiyorsanız, bunlar sömürülebilir olmasa bile **boş bir kanarya arayabilirsiniz**.
### Mesajlar Gönderme
DOM Invader, web mesajlarını kullanarak DOM XSS testi yapmaya olanak tanır ve şunlar gibi özelliklere sahiptir:
1. `postMessage()` aracılığıyla gönderilen **web mesajlarının kaydedilmesi**, Burp Proxy'nin HTTP istek/yanıt geçmişi kaydı tutma işlemine benzer.
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şiklikler** ve web mesajlarının gönderilmesi.
2024-02-10 18:14:16 +00:00
#### Mesaj ayrıntıları
Her mesaj hakkında ayrıntılı bilgi, mesajın **istemci tarafındaki JavaScript'in** mesajın `origin`, `data` veya `source` özelliklerine erişip erişmediğini içerir.
* **`origin`** : Mesajın **köken bilgileri kontrol edilmediyse**, herhangi bir harici alandaki olay işleyicisine **çapraz köken 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.
2024-02-10 18:14:16 +00:00
#### Bir mesajı yanıtla
2024-02-10 18:14:16 +00:00
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**i tıklayın.
2024-02-10 18:14:16 +00:00
### Prototip Kirliliği
DOM Invader ayrıca **Prototip Kirliliği zafiyetlerini arayabilir**. İlk olarak, bunu etkinleştirmeniz gerekir:
<figure><img src="../../.gitbook/assets/image (5) (1) (1) (3).png" alt=""><figcaption></figcaption></figure>
Daha sonra, **`Object.prototype`'ye** keyfi özellikler eklemenizi sağlayan **kaynakları arayacaktır**.
Herhangi bir şey bulunursa, **bulunan kaynağı test etmek için** bir **Test** düğmesi görünecektir. Üzerine tıklayın, yeni bir sekme açılacak, konsolda bir nesne oluşturun ve `testproperty`'nin var olup olmadığını kontrol edin:
```javascript
let b = {}
b.testproperty
```
2024-02-10 18:14:16 +00:00
Bir kaynak bulduktan sonra **gadget taraması yapabilirsiniz**:
1. **DOM** görünümünde tanımlanan herhangi bir prototip kirliliği kaynağının yanında bulunan **Gadgetları Tara** düğmesine tıklandığında, DOM Invader tarafından yeni bir sekme açılır. Uygun gadgetlar için tarama işlemi başlar.
2. Aynı sekmede, tarama tamamlandıktan sonra, tanımlanan gadgetlar 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**.
2024-02-10 18:14:16 +00:00
## 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>AWS hacklemeyi sıfırdan kahraman olmaya öğrenin</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> ile!</strong></summary>
2024-02-10 18:14:16 +00:00
HackTricks'i desteklemenin diğer yolları:
2024-01-01 17:15:42 +00:00
* **Ş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!
2024-02-10 18:14:16 +00:00
* [**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) veya [telegram grubuna](https://t.me/peass) katılın veya** bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)'da **takip edin**.
* **Hacking püf noktalarınızı paylaşarak PR'ler göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.
</details>