BrowExt - permissions & host_permissions

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

मूल जानकारी

permissions

अनुमतियाँ एक्सटेंशन के manifest.json फ़ाइल में permissions प्रॉपर्टी का उपयोग करके परिभाषित की जाती हैं और ब्राउज़र को कुछ भी एक्सेस करने की अनुमति देती हैं (कुकीज़ या फिजिकल स्टोरेज):

पिछला मैनिफ़ेस्ट घोषित करता है कि एक्सटेंशन को storage अनुमति की आवश्यकता है। इसका मतलब है कि यह the storage API का उपयोग करके अपने डेटा को स्थायी रूप से स्टोर कर सकता है। कुकीज़ या localStorage APIs की तरह जो उपयोगकर्ताओं को कुछ स्तर का नियंत्रण देते हैं, एक्सटेंशन स्टोरेज को सामान्य रूप से केवल एक्सटेंशन को अनइंस्टॉल करके ही साफ किया जा सकता है

एक्सटेंशन अपने manifest.json फ़ाइल में घोषित अनुमतियों का अनुरोध करेगा और एक्सटेंशन को स्थापित करने के बाद, आप अपने ब्राउज़र में हमेशा इसकी अनुमतियों की जांच कर सकते हैं, जैसा कि इस छवि में दिखाया गया है:

आप यहाँ पूरी सूची अनुमतियों का पता लगा सकते हैं जिन्हें एक Chromium ब्राउज़र एक्सटेंशन अनुरोध कर सकता है यहाँ और एक पूरी सूची Firefox एक्सटेंशन के लिए यहाँ

host_permissions

वैकल्पिक लेकिन शक्तिशाली सेटिंग host_permissions यह दर्शाती है कि एक्सटेंशन किस होस्ट के साथ apis के माध्यम से बातचीत कर सकेगा जैसे कि cookies, webRequest, और tabs

निम्नलिखित host_permissions बुनियादी रूप से हर वेब को अनुमति देते हैं:

"host_permissions": [
"*://*/*"
]

// Or:
"host_permissions": [
"http://*/*",
"https://*/*"
]

// Or:
"host_permissions": [
"<all_urls>"
]

अनुमतियाँ और होस्ट_अनुमतियाँ

टैब्स

इसके अतिरिक्त, host_permissions भी "उन्नत" टैब्स API कार्यक्षमता को अनलॉक करते हैं। इन्हें एक्सटेंशन को tabs.query() को कॉल करने की अनुमति देते हैं और उपयोगकर्ता के ब्राउज़र टैब्स की सूची वापस लेने के साथ-साथ यह भी सीखने की अनुमति देते हैं कि कौन सी वेब पेज (अर्थात पता और शीर्षक) लोड है।

इसके अलावा, tabs.onUpdated जैसे सुनने वाले भी बहुत अधिक उपयोगी हो जाते हैं। ये जब किसी नए पेज को एक टैब में लोड होता है तो सूचित किए जाएंगे।

कंटेंट स्क्रिप्ट्स चलाना

कंटेंट स्क्रिप्ट्स आवश्यक रूप से एक्सटेंशन मैनिफेस्ट में स्थिर रूप से लिखे नहीं जाते हैं। पर्याप्त host_permissions दिए जाने पर, एक्सटेंशन इन्हें डायनामिक रूप से भी लोड कर सकते हैं tabs.executeScript() या scripting.executeScript() को कॉल करके।

ये दोनों API एक्सटेंशन में सामग्री स्क्रिप्ट्स के रूप में संभावित नहीं केवल फ़ाइलों को नहीं चलाने देते हैं बल्कि अर्बिट्रेरी कोड भी। पहले वाला जावास्क्रिप्ट कोड को एक स्ट्रिंग के रूप में पास करने की अनुमति देता है जबकि दूसरा जावास्क्रिप्ट फ़ंक्शन की अपेक्षा करता है जो अंदर घुसने के जोखिम कम होता है। फिर भी, यदि गलत तरीके से उपयोग किया जाए, तो दोनों API अत्यधिक हानि पहुंचा सकते हैं।

उपरोक्त क्षमताओं के अतिरिक्त, कंटेंट स्क्रिप्ट्स उदाहरण के लिए क्रेडेंशियल्स को अंतर्दृष्टि कर सकते हैं जैसे कि वेब पेज में दर्ज किए जाते हैं। उन्हें अपने विज्ञापनों को प्रवेश कराने का एक और विशेष तरीका है। स्कैम संदेश जो खबरों की विश्वसनीयता का दुरुपयोग करने के लिए संभव है। अंततः, वे बैंकिंग को पुनर्निर्देशित करने के लिए बैंकिंग वेबसाइटों को संशोधित कर सकते हैं।

निहित विशेषाधिकार

कुछ एक्सटेंशन विशेषाधिकार स्पष्ट रूप से घोषित किए जाने की आवश्यकता नहीं हैं। एक उदाहरण है tabs API: इसकी मूल कार्यक्षमता कोई भी विशेषाधिकार के बिना ही पहुंच सकती है। किसी भी एक्सटेंशन को यह सूचित किया जा सकता है जब आप टैब्स खोलते और बंद करते हैं, बस यह नहीं पता चलेगा कि ये टैब्स किस वेबसाइट से संबंधित हैं।

बहुत हानिकारक लगता है? tabs.create() API थोड़ा कम है। इसका उपयोग नए टैब बनाने के लिए किया जा सकता है, मूल रूप से window.open() के समान जिसे किसी भी वेबसाइट द्वारा कॉल किया जा सकता है। फिर भी window.open() पॉप-अप ब्लॉकर के अधीन है, tabs.create() नहीं है।

एक एक्सटेंशन किसी भी समय किसी भी संख्या में टैब्स बना सकता है।

यदि आप tabs.create() पैरामीटरों की संभावितता में देखते हैं, तो आप यह भी देखेंगे कि इसकी क्षमताएँ window.open() द्वारा नियंत्रित करने की अनुमति देने के अतिरिक्त जाती हैं। और जबकि फ़ायरफ़ॉक्स data: URIs का उपयोग इस API के साथ किया जाने की अनुमति नहीं देता, वहीं क्रोम में ऐसी सुरक्षा नहीं है। इस तरह के URIs का उपयोग फिशिंग के लिए दुरुपयोग किए जाने के कारण प्रतिबंधित किया गया है

tabs.update() tabs.create() के बहुत ही समान है लेकिन एक मौजूदा टैब को संशोधित करेगा। इसलिए, एक दुर्भाग्यपूर्ण एक्सटेंशन उदाहरण के लिए आपके टैब में विज्ञापन पृष्ठ को अनियमित रूप से लोड कर सकता है, और यह संबंधित टैब को भी सक्रिय कर सकता है।

वेबकैम, भूगोल और मित्र

आप शायद जानते हैं कि वेबसाइट विशेष अनुमतियाँ मांग सकती हैं, जैसे कि आपकी वेबकैम तक पहुंचने के लिए (वीडियो संवाद उपकरण) या भौगोलिक स्थान (नक्शे)। इसमें दुरुपयोग की काफी संभावना है, इसलिए प्रत्येक बार उपयोगकर्ता को इसे फिर से पुष्टि करनी होती है।

ब्राउज़र एक्सटेंशन के साथ ऐसा नहीं है। अगर एक ब्राउज़र एक्सटेंशन आपकी वेबकैम या माइक्रोफोन तक पहुंचना चाहता है, तो इसे केवल एक बार अनुमति मांगने की आवश्यकता होती है

सामान्यत: एक एक्सटेंशन इसे स्थापित होने के बाद तुरंत करेगा। एक बार इस प्रॉम्प्ट को स्वीकार किया जाता है, वेबकैम तक पहुंच किसी भी समय संभव है, यहाँ तक कि उपयोगकर्ता इस समय एक्सटेंशन के साथ इंटरैक्टिंग नहीं है। हाँ, एक उपयोगकर्ता केवल तब ही इस प्रॉम्प्ट को स्वीकार करेगा जब एक्सटेंशन वास्तव में वेबकैम तक पहुंच की आवश्यकता होती है। लेकिन उसके बाद उन्हें एक्सटेंशन पर गुप्त रूप से कुछ भी रिकॉर्ड न करने के लिए एक्सटेंशन पर विश्वास करना होगा।

आपके सटीक भौगोलिक स्थान या क्लिपबोर्ड की सामग्री तक पहुंच के साथ, स्पष्ट रूप से अनुमति देने की आवश्यकता नहीं है। एक एक्सटेंशन बस अपने मैनिफेस्ट की अनुमतियों प्रविष्टि में geolocation या clipboard जोड़ता है। ये पहुंच विशेषाधिकार फिर से एक्सटेंशन स्थाप

संदर्भ

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert)!

HackTricks का समर्थन करने के अन्य तरीके:

Last updated