# 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. इसे सक्षम करें
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` एट्रिब्यूट वैश्विक चर या फॉर्म ऑब्जेक्ट्स के साथ टकराते हैं (`` → `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}}