Client Side Prototype Pollution
Last updated
Last updated
सीखें और प्रैक्टिस करें AWS हैकिंग:HackTricks Training AWS Red Team Expert (ARTE) सीखें और प्रैक्टिस करें GCP हैकिंग: HackTricks Training GCP Red Team Expert (GRTE)
उपकरण https://github.com/dwisiswant0/ppfuzz, https://github.com/kleiton0x00/ppmap और https://github.com/kosmosec/proto-find का उपयोग प्रोटोटाइप प्रदूषण कमजोरियों को खोजने के लिए किया जा सकता है।
इसके अलावा, आप ब्राउज़र एक्सटेंशन PPScan का उपयोग करके स्वचालित रूप से स्कैन कर सकते हैं पृष्ठों को जिनका आप पहुँच करते हैं प्रोटोटाइप प्रदूषण कमजोरियों के लिए।
एक बार जब किसी भी उपकरण द्वारा एक प्रोटोटाइप प्रदूषण की भेद्यता की पहचान की जाती है, और यदि कोड अत्यधिक जटिल नहीं है, तो आप 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
जैसे कीवर्ड्स के लिए खोज कर सकते हैं और स्रोत कोड की समीक्षा कर सकते हैं और जांच सकते हैं कि क्या यह जावास्क्रिप्ट निष्पादन की ओर ले जाता है। कभी-कभी, उल्लेखित तकनीकें गैजेट्स नहीं खोज पाती हैं। उस मामले में, शुद्ध स्रोत कोड समीक्षा कुछ अच्छे गैजेट्स का खुलासा करती है जैसे कि नीचे दिया गया उदाहरण।
इस लेख को देखें: https://blog.huli.tw/2022/05/02/en/intigriti-revenge-challenge-author-writeup/
यह शोध कुछ HTML sanitizers लाइब्रेरी द्वारा प्रदान की गई सैनिटाइजेशन को बायपास करने के लिए PP गैजेट्स दिखाता है:
sanitize-html
dompurify
Closure
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE) GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)