mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
139 lines
15 KiB
Markdown
139 lines
15 KiB
Markdown
# DOM Invader
|
||
|
||
{{#include ../../banners/hacktricks-training.md}}
|
||
|
||
## DOM Invader
|
||
|
||
DOM Invader एक ब्राउज़र टूल है जो **Burp Suite के अंतर्निहित Chromium ब्राउज़र** में स्थापित है। यह **DOM XSS और अन्य क्लाइंट-साइड कमजोरियों** (प्रोटोटाइप प्रदूषण, DOM क्लॉबरिंग, आदि) का **स्वचालित रूप से JavaScript स्रोतों और सिंक्स** को **संकेतित** करके पता लगाने में मदद करता है। यह एक्सटेंशन Burp के साथ आता है और केवल इसे सक्षम करने की आवश्यकता होती है।
|
||
|
||
DOM Invader ब्राउज़र के DevTools पैनल में एक टैब जोड़ता है जो आपको:
|
||
|
||
1. **वास्तविक समय में नियंत्रित सिंक्स** की पहचान करने की अनुमति देता है, जिसमें संदर्भ (एट्रिब्यूट, HTML, URL, JS) और लागू की गई सफाई शामिल है।
|
||
2. **`postMessage()` वेब-मैसेजेस को लॉग, संपादित और फिर से भेजें**, या एक्सटेंशन को उन्हें स्वचालित रूप से परिवर्तित करने दें।
|
||
3. **क्लाइंट-साइड प्रोटोटाइप-प्रदूषण स्रोतों का पता लगाएं और गैजेट→सिंक श्रृंखलाओं के लिए स्कैन करें**, जो ऑन-द-फ्लाई PoCs उत्पन्न करते हैं।
|
||
4. **DOM क्लॉबरिंग वेक्टर खोजें** (जैसे `id` / `name` टकराव जो वैश्विक चर को ओवरराइट करते हैं)।
|
||
5. **व्यवहार को ठीक करें** एक समृद्ध सेटिंग्स UI के माध्यम से (कस्टम कैनरी, ऑटो-इंजेक्शन, रीडायरेक्ट ब्लॉकिंग, स्रोत/सिंक सूचियाँ, आदि)।
|
||
|
||
---
|
||
|
||
### 1. इसे सक्षम करें
|
||
|
||
<figure><img src="../../images/image (1129).png" alt=""><figcaption></figcaption></figure>
|
||
|
||
1. **Proxy ➜ Intercept ➜ Open Browser** (Burp का एम्बेडेड ब्राउज़र) खोलें।
|
||
2. **Burp Suite** लोगो पर क्लिक करें (ऊपर दाएं)। यदि यह छिपा हुआ है, तो पहले जिग्सॉ-पीस पर क्लिक करें।
|
||
3. **DOM Invader** टैब में, **Enable DOM Invader** को ON करें और **Reload** दबाएं।
|
||
4. DevTools खोलें ( `F12` / Right-click ➜ Inspect ) और इसे डॉक करें। एक नया **DOM Invader** पैनल प्रकट होता है।
|
||
|
||
> Burp प्रत्येक प्रोफ़ाइल के लिए स्थिति को याद रखता है। यदि आवश्यक हो तो *Settings ➜ Tools ➜ Burp’s browser ➜ Store settings...* के तहत इसे अक्षम करें।
|
||
|
||
### 2. एक कैनरी इंजेक्ट करें
|
||
|
||
एक **कैनरी** एक यादृच्छिक मार्कर स्ट्रिंग है (जैसे `xh9XKYlV`) जिसे DOM Invader ट्रैक करता है। आप:
|
||
|
||
* इसे **कॉपी** करें और मैन्युअल रूप से इसे पैरामीटर, फॉर्म, वेब-सॉकेट फ्रेम, वेब-मैसेजेस, आदि में इंजेक्ट करें।
|
||
* **Inject URL params / Inject forms** बटन का उपयोग करें ताकि एक नया टैब खुले जहाँ कैनरी हर क्वेरी की कुंजी/मान या फॉर्म फ़ील्ड में स्वचालित रूप से जोड़ा जाए।
|
||
* एक **खाली कैनरी** के लिए खोजें ताकि सभी सिंक्स को उनके शोषणीयता के बावजूद प्रकट किया जा सके (जांच के लिए महान)।
|
||
|
||
#### कस्टम कैनरी (2025+)
|
||
|
||
Burp 2024.12 ने **कैनरी सेटिंग्स** (Burp-logo ➜ DOM Invader ➜ Canary) पेश की। आप:
|
||
|
||
* **यादृच्छिक** या **कस्टम स्ट्रिंग** सेट कर सकते हैं (जो मल्टी-टैब परीक्षण के लिए सहायक है या जब डिफ़ॉल्ट मान स्वाभाविक रूप से पृष्ठ पर दिखाई देता है)।
|
||
* **कॉपी** करें मान को क्लिपबोर्ड पर।
|
||
* परिवर्तनों के लिए **Reload** की आवश्यकता होती है।
|
||
|
||
---
|
||
|
||
### 3. वेब-मैसेजेस (`postMessage`)
|
||
|
||
**Messages** उप-टैब हर `window.postMessage()` कॉल को रिकॉर्ड करता है, `origin`, `source`, और `data` उपयोग को दिखाता है।
|
||
|
||
• **संशोधित करें और फिर से भेजें**: एक संदेश पर डबल-क्लिक करें, `data` को संपादित करें, और **Send** दबाएं (Burp Repeater की तरह)।
|
||
|
||
• **ऑटो-फज़**: सेटिंग्स में **Postmessage interception ➜ Auto-mutate** सक्षम करें ताकि DOM Invader कैनरी-आधारित पेलोड उत्पन्न कर सके और उन्हें हैंडलर को फिर से भेज सके।
|
||
|
||
फील्ड का अर्थ पुनर्कथन:
|
||
|
||
* **origin** – क्या हैंडलर `event.origin` को मान्य करता है।
|
||
* **data** – पेलोड स्थान। यदि अप्रयुक्त है, तो सिंक अप्रासंगिक है।
|
||
* **source** – iframe / विंडो संदर्भ मान्यता; अक्सर सख्त-उत्पत्ति जांच की तुलना में कमजोर होता है।
|
||
|
||
---
|
||
|
||
### 4. प्रोटोटाइप प्रदूषण
|
||
|
||
**Settings ➜ Attack types ➜ Prototype pollution** के तहत सक्षम करें।
|
||
|
||
कार्यप्रवाह:
|
||
|
||
1. **Browse** – DOM Invader प्रदूषण **sources** (`__proto__`, `constructor`, `prototype`) को URL/query/hash या JSON वेब-मैसेजेस में चिह्नित करता है।
|
||
2. **Test** – *Test* पर क्लिक करें ताकि एक PoC टैब खुले जहाँ `Object.prototype.testproperty` होना चाहिए:
|
||
|
||
```javascript
|
||
let obj = {};
|
||
console.log(obj.testproperty); // ➜ 'DOM_INVADER_PP_POC'
|
||
```
|
||
3. **गैजेट्स के लिए स्कैन करें** – DOM Invader प्रॉपर्टी नामों को ब्रूटफोर्स करता है और ट्रैक करता है कि क्या कोई खतरनाक सिंक्स में समाप्त होता है (जैसे `innerHTML`)।
|
||
4. **शोषण** – जब एक गैजेट-सिंक श्रृंखला पाई जाती है, तो एक *Exploit* बटन प्रकट होता है जो स्रोत + गैजेट + सिंक को अलर्ट ट्रिगर करने के लिए जोड़ता है।
|
||
|
||
उन्नत सेटिंग्स (गियर आइकन):
|
||
|
||
* **CSP / X-Frame-Options को हटा दें** ताकि गैजेट स्कैनिंग के दौरान iframes कार्यशील रहें।
|
||
* **अलग-अलग फ्रेम में स्कैन तकनीकों** को सक्षम करें ताकि `__proto__` और `constructor` के बीच हस्तक्षेप से बचा जा सके।
|
||
* **तकनीकों को** व्यक्तिगत रूप से अक्षम करें जो नाजुक ऐप्स के लिए हैं।
|
||
|
||
---
|
||
|
||
### 5. DOM क्लॉबरिंग
|
||
|
||
**Attack types ➜ DOM clobbering** को टॉगल करें। DOM Invader उन गतिशील रूप से बनाए गए तत्वों की निगरानी करता है जिनके `id`/`name` एट्रिब्यूट वैश्विक चर या फॉर्म ऑब्जेक्ट्स के साथ टकराते हैं (`<input name="location">` → `window.location` को क्लॉबर करता है)। जब भी उपयोगकर्ता-नियंत्रित मार्कअप चर प्रतिस्थापन की ओर ले जाता है, एक प्रविष्टि उत्पन्न होती है।
|
||
|
||
---
|
||
|
||
## 6. सेटिंग्स अवलोकन (2025)
|
||
|
||
DOM Invader अब **Main / Attack Types / Misc / Canary** श्रेणियों में विभाजित है।
|
||
|
||
1. **Main**
|
||
* **Enable DOM Invader** – वैश्विक स्विच।
|
||
* **Postmessage interception** – संदेश लॉगिंग को चालू/बंद करें; ऑटो-म्यूटेशन के लिए उप-टॉगल।
|
||
* **Custom Sources/Sinks** – *गियर आइकन* ➜ विशिष्ट सिंक्स (जैसे `eval`, `setAttribute`) को सक्षम/अक्षम करें जो ऐप को तोड़ सकते हैं।
|
||
|
||
2. **Attack Types**
|
||
* **Prototype pollution** (प्रत्येक तकनीक सेटिंग्स के साथ)।
|
||
* **DOM clobbering**।
|
||
|
||
3. **Misc**
|
||
* **Redirect prevention** – क्लाइंट-साइड रीडायरेक्ट को ब्लॉक करें ताकि सिंक सूची खो न जाए।
|
||
* **Redirect से पहले ब्रेकपॉइंट** – कॉल-स्टैक निरीक्षण के लिए रीडायरेक्ट से ठीक पहले JS को रोकें।
|
||
* **सभी स्रोतों में कैनरी इंजेक्ट करें** – हर जगह कैनरी को स्वचालित रूप से इंजेक्ट करें; कॉन्फ़िगर करने योग्य स्रोत/पैरामीटर अनुमति-सूची।
|
||
|
||
4. **Canary**
|
||
* देखें / यादृच्छिक करें / कस्टम कैनरी सेट करें; क्लिपबोर्ड पर कॉपी करें। परिवर्तनों के लिए ब्राउज़र रीलोड की आवश्यकता होती है।
|
||
|
||
---
|
||
|
||
### 7. टिप्स और अच्छे अभ्यास
|
||
|
||
* **विशिष्ट कैनरी का उपयोग करें** – सामान्य स्ट्रिंग्स जैसे `test` से बचें, अन्यथा झूठे सकारात्मक होते हैं।
|
||
* **भारी सिंक्स** (`eval`, `innerHTML`) को अस्थायी रूप से अक्षम करें यदि वे नेविगेशन के दौरान पृष्ठ कार्यक्षमता को तोड़ते हैं।
|
||
* **Burp Repeater & Proxy के साथ संयोजन करें** – उस ब्राउज़र अनुरोध/प्रतिक्रिया को दोहराएं जिसने कमजोर स्थिति उत्पन्न की और अंतिम शोषण URLs तैयार करें।
|
||
* **फ्रेम स्कोप को याद रखें** – स्रोत/सिंक ब्राउज़िंग संदर्भ के अनुसार प्रदर्शित होते हैं; iframes के अंदर कमजोरियों को मैन्युअल ध्यान देने की आवश्यकता हो सकती है।
|
||
* **साक्ष्य निर्यात करें** – DOM Invader पैनल पर राइट-क्लिक करें ➜ *Save screenshot* रिपोर्ट में शामिल करने के लिए।
|
||
|
||
---
|
||
|
||
## संदर्भ
|
||
|
||
- [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)
|
||
- [https://portswigger.net/burp/documentation/desktop/tools/dom-invader/settings/canary](https://portswigger.net/burp/documentation/desktop/tools/dom-invader/settings/canary)
|
||
- [https://portswigger.net/burp/documentation/desktop/tools/dom-invader/settings/misc](https://portswigger.net/burp/documentation/desktop/tools/dom-invader/settings/misc)
|
||
|
||
{{#include ../../banners/hacktricks-training.md}}
|