Client Side Prototype Pollution
स्वचालित उपकरणों का उपयोग करके खोजना
उपकरण https://github.com/dwisiswant0/ppfuzz, https://github.com/kleiton0x00/ppmap और https://github.com/kosmosec/proto-find का उपयोग किया जा सकता है प्रोटोटाइप पोल्यूशन वंशांकन की खोज के लिए।
इसके अतिरिक्त, आप ब्राउज़र एक्सटेंशन PPScan का उपयोग करके स्वचालित रूप से प्रोटोटाइप पोल्यूशन वंशांकन की जांच कर सकते हैं जिन पृष्ठों तक आप पहुंचते हैं।
जांचें कि एक गुण का उपयोग कहाँ हो रहा है
प्रोटोटाइप पोल्यूशन के मूल कारण का पता लगाना
जब किसी भी टूल द्वारा प्रोटोटाइप पोल्यूशन की एक वंशजता खोजी जाती है, और यदि कोड अत्यधिक जटिल नहीं है, तो आप location.hash
, decodeURIComponent
, या location.search
जैसे कीवर्ड खोजकर Chrome Developer Tools में विकल्पित खंड को पहचान सकते हैं। यह दृष्टिकोण आपको जावास्क्रिप्ट कोड के वंशजता पोल्यूशन के वंशजता खोजने में मदद करता है।
अधिक और अधिक जटिल कोडबेस के लिए, एक सीधा तरीका वंशजता कोड की खोज करने के लिए निम्नलिखित चरणों को शामिल करता है:
एक टूल का उपयोग करके एक वंशजता की वंशजता को सेट करने के लिए डिज़ाइन किया गया पेलोड खोजने और प्राप्त करने के लिए। ppmap द्वारा प्रदान किया गया एक उदाहरण इस प्रकार हो सकता है:
constructor[prototype][ppmap]=reserved
।पृष्ठ पर जावास्क्रिप्ट कोड की पहली पंक्ति पर एक ब्रेकपॉइंट सेट करें जो निष्पादित होगी। पेज को पेलोड के साथ रिफ्रेश करें, इस ब्रेकपॉइंट पर निष्पादन को रोकते हुए।
जब जावास्क्रिप्ट निष्पादन किया जा रहा है, तो JS कंसोल में निम्नलिखित स्क्रिप्ट को निष्पादित करें। यह स्क्रिप्ट संकेत करेगा जब 'ppmap' गुण सिर्जित होगा, जिससे इसकी मूल स्थान का पता लगाने में मदद मिलेगी:
स्रोत टैब पर जाएं और "स्क्रिप्ट क्रियान्वयन आगे बढ़ाएं" का चयन करें। जावास्क्रिप्ट क्रियान्वयन जारी रहेगा, और 'ppmap' गुण प्रत्याशित रूप से प्रदूषित हो जाएगा। प्रदान किए गए स्निपेट का उपयोग करके 'ppmap' गुण को प्रदूषित होने की सटीक स्थान की पहचान करना सुविधाजनक होगा। कॉल स्टैक की जांच करके प्रदूषण के घटना स्थान को विभिन्न स्टैक्स में देखा जा सकता है।
प्रदूषण के स्थान का निर्धारण करते समय, जावास्क्रिप्ट लाइब्रेरी फ़ाइलों से जुड़े स्टैक्स को लक्ष्य बनाना उपयोगी होता है, क्योंकि प्रोटोटाइप प्रदूषण अक्सर इन लाइब्रेरियों के भीतर होता है। लाइब्रेरी फ़ाइलों से जुड़े स्टैक की पहचान करके संबंधित स्टैक की पहचान करें (जो दाएं ओर दिखाई देती है, मार्गदर्शन के लिए एक छवि की तरह)। जैसे कि लाइन 4 और 6 पर कई स्टैक्स होने वाले स्थितियों में, तो लॉजिकल चयन लाइन 4 पर स्थित स्टैक है, क्योंकि यह प्रदूषण की प्रारंभिक घटना का प्रतिनिधित्व करता है और इसलिए संकट के मूल कारण को। स्टैक पर क्लिक करने से आपको वंशवादित कोड पर निर्देशित किया जाएगा।
स्क्रिप्ट गैजेट्स खोजना
गैजेट वह कोड है जिसे एक PP भ्रांति का पता लगाने के बाद दुरुपयोग किया जाएगा।
यदि एप्लिकेशन सरल है, हम कीवर्ड जैसे srcdoc/innerHTML/iframe/createElement
की खोज कर सकते हैं और स्रोत कोड की समीक्षा कर सकते हैं और देख सकते हैं कि क्या यह जावास्क्रिप्ट क्रियान्वयन तक पहुंचता है। कभी-कभी, उल्लिखित तकनीकों से गैजेट्स का पता नहीं चलता है। उस मामले में, निरपेक्ष स्रोत कोड समीक्षा से कुछ अच्छे गैजेट्स प्रकट होते हैं जैसे नीचे दिए गए उदाहरण में।
उदाहरण Mithil लाइब्रेरी कोड में PP गैजेट खोजना
इस लेख की जांच करें: https://blog.huli.tw/2022/05/02/en/intigriti-revenge-challenge-author-writeup/
विकल्पी लाइब्रेरियों के लिए प्रदूषित पेलोड का पुनर्संयोजन
PP के माध्यम से HTML सैनिटाइजर्स को उमके से छलना
यह शोध दिखाता है कि कुछ HTML सैनिटाइजर्स लाइब्रेरियों द्वारा प्रदान की गई सैनिटेशन को छलने के लिए PP गैजेट्स का उपयोग करने के लिए:
sanitize-html
dompurify
Closure
संदर्भ
Last updated