Abusing Service Workers
Try Hard सुरक्षा समूह
मूल जानकारी
सर्विस वर्कर एक स्क्रिप्ट है जो आपके ब्राउज़र द्वारा पृष्ठ से अलग, किसी भी वेब पृष्ठ या उपयोगकर्ता अंतर्क्रिया की आवश्यकता न होने पर सुविधाएँ सक्षम करने के लिए पृष्ठ, इसलिए ऑफलाइन और पृष्ठ प्रसंस्करण क्षमताओं को बढ़ाता है। सेवा वर्कर्स पर विस्तृत जानकारी यहाँ मिल सकती है। एक वेब डोमेन के भीषित सर्विस वर्कर्स का दुरुपयोग करके हमलावर विक्टिम के सभी पृष्ठों के साथ इंटरेक्शन पर नियंत्रण प्राप्त कर सकते हैं।
मौजूदा सर्विस वर्कर्स की जांच
मौजूदा सर्विस वर्कर्स की जांच डेवलपर टूल्स में एप्लिकेशन टैब के सर्विस वर्कर्स खंड में की जा सकती है। एक और तरीका है chrome://serviceworker-internals पर जाकर एक अधिक विस्तृत दृश्य प्राप्त करना।
पुश अधिसूचनाएँ
पुश अधिसूचना अनुमतियाँ सीधे रूप से एक सर्विस वर्कर की क्षमता पर प्रभाव डालती हैं सर्वर के साथ उपयोगकर्ता अंतर्क्रिया के बिना संवाद करने की। अगर अनुमतियाँ निरस्त की जाती हैं, तो यह सर्विस वर्कर की संभावना को एक सतत खतरा प्रस्तुत करने में सीमित करता है। उल्टे, अनुमतियाँ प्रदान करने से सुरक्षा जोखिम बढ़ जाता है क्योंकि यह संभावित दुरुपयोगों को प्राप्त करने और क्रियान्वित करने की क्षमता को सक्षम करता है।
हमला एक सर्विस वर्कर बनाना
इस विकल्प को शातिरता से उपयोग करने के लिए आपको निम्नलिखित की खोज करनी होगी:
सर्वर पर विभिन्न JS फ़ाइलें अपलोड करने का एक तरीका और एक XSS जिससे अपलोड की गई JS फ़ाइल का सर्विस वर्कर लोड हो।
एक भेद्य JSONP अनुरोध जहां आप आउटपुट को (विभिन्न JS कोड के साथ) बदल सकते हैं और एक XSS जिससे पेलोड के साथ JSONP लोड करें जो एक दुरुपयोगी सर्विस वर्कर को लोड करेगा।
निम्नलिखित उदाहरण में मैं एक कोड प्रस्तुत करने जा रहा हूँ जो एक नया सर्विस वर्कर रजिस्टर करेगा जो fetch
घटना को सुनेगा और हमलावर के सर्वर को प्रत्येक फेच की यूआरएल भेजेगा (यह कोड आपको सर्वर पर अपलोड करने की आवश्यकता होगी या एक भेद्य JSONP प्रतिक्रिया के माध्यम से लोड करने की):
और यह कोड है जो कर्मचारी को पंजीकृत करेगा (जिसे आपको एक XSS का दुरुपयोग करके कार्यान्वित करना चाहिए)। इस मामले में एक GET अनुरोध हमलावादियों सर्वर पर भेजा जाएगा जो सूचित करेगा कि सेवा कर्मचारी का पंजीकरण सफल रहा या नहीं:
एक विकल्प JSONP इंडपॉइंट का दुरुपयोग करने के मामले में आपको मान var sw
के अंदर डालना चाहिए। उदाहरण के लिए:
एक C2 है जो सेवा कर्मचारियों का शोषण करने के लिए समर्पित है जिसे Shadow Workers कहा जाता है जो इन दुर्बलताओं का शोषण करने के लिए बहुत उपयोगी होगा।
24-घंटे कैश निर्देशिका एक दुर्भाग्यपूर्ण या संक्रमित सेवा कर्मचारी (SW) की जीवनकाल की सीमा को अधिकतम 24 घंटे तक निर्धारित करती है एक एक्सएसएस दुर्भाग्यता सुधार के बाद, यदि ऑनलाइन ग्राहक स्थिति में है। दुर्भाग्यता को कम करने के लिए, साइट ऑपरेटर SW स्क्रिप्ट का समय-से-जीवन (TTL) कम कर सकते हैं। डेवलपरों को त्वरित निष्क्रिय करने के लिए एक सेवा कर्मचारी किल-स्विच बनाने की सलाह दी जाती है।
DOM Clobbering के माध्यम से SW में importScripts
का दुरुपयोग
importScripts
का दुरुपयोगसेवा कर्मचारी से बुलाई गई importScripts
फ़ंक्शन एक विभिन्न डोमेन से स्क्रिप्ट आयात कर सकती है। यदि इस फ़ंक्शन को एक पैरामीटर के साथ बुलाया जाता है जिसे एक हमलावार संशोधित कर सकता है तो वह अपने डोमेन से एक जेएस स्क्रिप्ट आयात कर सकेगा और एक्सएसएस प्राप्त कर सकेगा।
यह यहाँ तक कि सीएसपी संरक्षण को भी उल्लंघन करता है।
उदाहरण विकल्प दुर्भाग्यपूर्ण कोड:
index.html
sw.js
DOM Clobbering के साथ
DOM Clobbering के बारे में अधिक जानकारी के लिए जांचें:
pageDom Clobberingयदि SW जिसे importScripts
को कॉल करने के लिए उपयोग किया जा रहा है, उस URL/domain को एक HTML element के अंदर है, तो DOM Clobbering के माध्यम से इसे संशोधित करना संभव है ताकि SW अपने खुद के डोमेन से एक स्क्रिप्ट लोड कर सके।
इसका उदाहरण के लिए संदर्भ लिंक देखें।
संदर्भ
Try Hard Security Group
Last updated