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