Abusing Service Workers
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
एक सर्विस वर्कर एक स्क्रिप्ट है जो आपके ब्राउज़र द्वारा बैकग्राउंड में चलती है, किसी भी वेब पृष्ठ से अलग, ऐसी सुविधाओं को सक्षम करती है जिन्हें वेब पृष्ठ या उपयोगकर्ता इंटरैक्शन की आवश्यकता नहीं होती, इस प्रकार ऑफलाइन और बैकग्राउंड प्रोसेसिंग क्षमताओं को बढ़ाती है। सर्विस वर्कर्स पर विस्तृत जानकारी यहां मिल सकती है। एक कमजोर वेब डोमेन के भीतर सर्विस वर्कर्स का शोषण करके, हमलावर पीड़ित के सभी पृष्ठों के साथ इंटरैक्शन पर नियंत्रण प्राप्त कर सकते हैं।
मौजूदा सर्विस वर्कर्स को डेवलपर टूल्स में एप्लिकेशन टैब के सर्विस वर्कर्स सेक्शन में चेक किया जा सकता है। एक और तरीका है chrome://serviceworker-internals पर जाकर अधिक विस्तृत दृश्य प्राप्त करना।
पुश नोटिफिकेशन अनुमतियाँ सीधे एक सर्विस वर्कर की सर्वर के साथ संवाद करने की क्षमता को प्रभावित करती हैं बिना सीधे उपयोगकर्ता इंटरैक्शन के। यदि अनुमतियाँ अस्वीकृत की जाती हैं, तो यह सर्विस वर्कर की निरंतर खतरे के रूप में संभावनाओं को सीमित करता है। इसके विपरीत, अनुमतियाँ देने से सुरक्षा जोखिम बढ़ जाते हैं क्योंकि यह संभावित शोषण के रिसेप्शन और निष्पादन को सक्षम करता है।
इस कमजोरी का शोषण करने के लिए आपको निम्नलिखित खोजने की आवश्यकता है:
सर्वर पर मनमाने JS फ़ाइलों को अपलोड करने का एक तरीका और अपलोड की गई JS फ़ाइल के सर्विस वर्कर को लोड करने के लिए एक XSS
एक कमजोर JSONP अनुरोध जहां आप आउटपुट (मनमाने JS कोड के साथ) को हेरफेर कर सकते हैं और एक XSS जो पेलोड के साथ JSONP को लोड करेगा जो एक दुर्भावनापूर्ण सर्विस वर्कर को लोड करेगा।
अगले उदाहरण में मैं एक कोड प्रस्तुत करने जा रहा हूँ जो एक नया सर्विस वर्कर रजिस्टर करेगा जो fetch
इवेंट को सुनेगा और प्रत्येक फेच की गई URL को हमलावर के सर्वर पर भेजेगा (यह वह कोड है जिसे आपको सर्वर पर अपलोड करने की आवश्यकता होगी या एक कमजोर JSONP प्रतिक्रिया के माध्यम से लोड करने की आवश्यकता होगी):
और यह वह कोड है जो कार्यकर्ता को पंजीकृत करेगा (यह कोड आपको XSS का दुरुपयोग करते हुए निष्पादित करने में सक्षम होना चाहिए)। इस मामले में एक GET अनुरोध हमलावरों के सर्वर पर भेजा जाएगा सूचित करने के लिए कि सेवा कार्यकर्ता का पंजीकरण सफल था या नहीं:
यदि आप एक कमजोर JSONP एंडपॉइंट का दुरुपयोग कर रहे हैं, तो आपको मान को var sw
के अंदर रखना चाहिए। उदाहरण के लिए:
There is a C2 dedicated to the exploitation of Service Workers called Shadow Workers that will be very useful to abuse these vulnerabilities.
The 24-hour cache directive limits the life of a malicious or compromised service worker (SW) to at most 24 hours after an XSS vulnerability fix, assuming online client status. To minimize vulnerability, site operators can lower the SW script's Time-To-Live (TTL). Developers are also advised to create a service worker kill-switch for rapid deactivation.
importScripts
in a SW via DOM ClobberingThe function importScripts
called from a Service Worker can import a script from a different domain. If this function is called using a parameter that an attacker could modify he would be able to import a JS script from his domain and get XSS.
यह CSP सुरक्षा को भी बायपास करता है।
Example vulnerable code:
index.html
sw.js
DOM क्लॉबरिंग क्या है, इसके बारे में अधिक जानकारी के लिए देखें:
Dom Clobberingयदि URL/डोमेन जहां SW importScripts
को कॉल करने के लिए उपयोग कर रहा है, एक HTML तत्व के अंदर है, तो इसे DOM क्लॉबरिंग के माध्यम से संशोधित करना संभव है ताकि SW आपके अपने डोमेन से एक स्क्रिप्ट लोड करे।
इसका उदाहरण देखने के लिए संदर्भ लिंक देखें।
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)