# DOM Invader
AWS hacklemeyi sıfırdan kahramana öğreninhtARTE (HackTricks AWS Red Team Expert) ile!
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
* [**PEASS Ailesi'ni**](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ı göndererek HackTricks ve HackTricks Cloud** github depolarına PR göndererek paylaşın.
## 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 etmede yardımcı olur**. Aracın 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** **günlüğe 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ı.
### Etkinleştirme
Burp'un yerleşik tarayıcısında **Burp uzantısı**na gidin ve etkinleştirin:
Şimdi sayfayı yenileyin ve **Dev Araçlar**'da **DOM Invader sekmesini** bulacaksınız:
### Bir Kanarya Enjekte Edin
Önceki görüntüde **rastgele bir karakter grubu, yani Kanarya** görebilirsiniz. Ş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, **kanaryanın ilginç bir sızıntıda sonlandığını** kontrol edecektir ve bu sızıntının istismar edilebileceğini gösterecektir.
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 istismar edilebilir olmasa bile **boş bir kanarya arayabilirsiniz**.
### Mesajlar Gönderme
DOM Invader, web mesajlarını kullanarak DOM XSS test etmeye olanak tanır ve şunlar gibi özelliklere sahiptir:
1. `postMessage()` ile gönderilen **web mesajlarının** günlüğe 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şiklikler** 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 bilgi, 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 edilmişse 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 edilmiş olsa 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. Gerekli olduğunda **Veri** alanını düzenleyin.
3. **Gönder**e tıklayın.
### Prototip Kirliliği
DOM Invader ayrıca **Prototip Kirliliği zafiyetlerini arayabilir**. İlk olarak, bunu etkinleştirmeniz gerekir:
Daha sonra, **`Object.prototype`'ye** keyfi özellikler eklemenize olanak tanıyan **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 tanımlanan herhangi bir 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)
AWS hacklemeyi sıfırdan kahraman seviyesine öğreninhtARTE (HackTricks AWS Red Team Expert)!
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) koleksiyonumuz
* **💬 [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)** takip edin.**
* **Hacking püf noktalarınızı 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.