15 KiB
Raw Blame History

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 ➜ Burps 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 होना चाहिए:
let obj = {};
console.log(obj.testproperty); // ➜ 'DOM_INVADER_PP_POC'
  1. गैजेट्स के लिए स्कैन करें DOM Invader प्रॉपर्टी नामों को ब्रूटफोर्स करता है और ट्रैक करता है कि क्या कोई खतरनाक सिंक्स में समाप्त होता है (जैसे innerHTML)।
  2. शोषण जब एक गैजेट-सिंक श्रृंखला पाई जाती है, तो एक 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) को सक्षम/अक्षम करें जो ऐप को तोड़ सकते हैं।
  1. Attack Types
  • Prototype pollution (प्रत्येक तकनीक सेटिंग्स के साथ)।
  • DOM clobbering
  1. Misc
  • Redirect prevention क्लाइंट-साइड रीडायरेक्ट को ब्लॉक करें ताकि सिंक सूची खो न जाए।
  • Redirect से पहले ब्रेकपॉइंट कॉल-स्टैक निरीक्षण के लिए रीडायरेक्ट से ठीक पहले JS को रोकें।
  • सभी स्रोतों में कैनरी इंजेक्ट करें हर जगह कैनरी को स्वचालित रूप से इंजेक्ट करें; कॉन्फ़िगर करने योग्य स्रोत/पैरामीटर अनुमति-सूची।
  1. Canary
  • देखें / यादृच्छिक करें / कस्टम कैनरी सेट करें; क्लिपबोर्ड पर कॉपी करें। परिवर्तनों के लिए ब्राउज़र रीलोड की आवश्यकता होती है।

7. टिप्स और अच्छे अभ्यास

  • विशिष्ट कैनरी का उपयोग करें सामान्य स्ट्रिंग्स जैसे test से बचें, अन्यथा झूठे सकारात्मक होते हैं।
  • भारी सिंक्स (eval, innerHTML) को अस्थायी रूप से अक्षम करें यदि वे नेविगेशन के दौरान पृष्ठ कार्यक्षमता को तोड़ते हैं।
  • Burp Repeater & Proxy के साथ संयोजन करें उस ब्राउज़र अनुरोध/प्रतिक्रिया को दोहराएं जिसने कमजोर स्थिति उत्पन्न की और अंतिम शोषण URLs तैयार करें।
  • फ्रेम स्कोप को याद रखें स्रोत/सिंक ब्राउज़िंग संदर्भ के अनुसार प्रदर्शित होते हैं; iframes के अंदर कमजोरियों को मैन्युअल ध्यान देने की आवश्यकता हो सकती है।
  • साक्ष्य निर्यात करें DOM Invader पैनल पर राइट-क्लिक करें ➜ Save screenshot रिपोर्ट में शामिल करने के लिए।

संदर्भ

{{#include ../../banners/hacktricks-training.md}}