GWS - App Scripts
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)
App Scripts कोड है जो तब सक्रिय होगा जब कोई उपयोगकर्ता जिसके पास संपादक अनुमति है, उस दस्तावेज़ तक पहुंचता है जिसके साथ App Script जुड़ा हुआ है और OAuth प्रॉम्प्ट को स्वीकार करने के बाद। इन्हें App Script के मालिक द्वारा हर निश्चित समय पर निष्पादित करने के लिए भी सेट किया जा सकता है (Persistence)।
App Script बनाने के कई तरीके हैं, हालांकि सबसे सामान्य तरीके Google Document (किसी भी प्रकार का) से और स्वतंत्र परियोजना के रूप में हैं:
एक App Script बनाने से शुरू करें, इस परिदृश्य के लिए मेरी सिफारिश है कि एक Google Sheet बनाएं और Extensions > App Scripts
पर जाएं, इससे आपके लिए शीट से जुड़ा एक नया App Script खुलेगा।
OAuth टोकन तक पहुंच देने के लिए आपको Services +
पर क्लिक करना होगा और जैसे स्कोप जोड़ने होंगे:
AdminDirectory: निर्देशिका के उपयोगकर्ताओं और समूहों तक पहुंच (यदि उपयोगकर्ता के पास पर्याप्त अनुमतियाँ हैं)
Gmail: जीमेल डेटा तक पहुंचने के लिए
Drive: ड्राइव डेटा तक पहुंचने के लिए
Google Sheets API: ताकि यह ट्रिगर के साथ काम करे
अपने लिए आवश्यक स्कोप बदलने के लिए आप प्रोजेक्ट सेटिंग्स पर जा सकते हैं और सक्षम कर सकते हैं: Show "appsscript.json" manifest file in editor
।
अनुरोध को कैप्चर करने के लिए आप बस चला सकते हैं:
Permissions requested to execute the App Script:
जब एक बाहरी अनुरोध किया जाता है, तो OAuth प्रॉम्प्ट भी बाहरी एंडपॉइंट्स तक पहुँचने की अनुमति मांगेगा।
एक बार जब ऐप पढ़ लिया जाए, तो ⏰ ट्रिगर्स पर क्लिक करें ताकि एक ट्रिगर बनाया जा सके। फंक्शन के लिए getToken
चुनें, जो तैनाती पर Head
पर चलता है, इवेंट स्रोत में From spreadsheet
चुनें और इवेंट प्रकार में On open
या On edit
(आपकी आवश्यकताओं के अनुसार) चुनें और सहेजें।
ध्यान दें कि आप Executions टैब में ऐप स्क्रिप्ट के रन की जांच कर सकते हैं यदि आप कुछ डिबग करना चाहते हैं।
ट्रिगर को ऐप स्क्रिप्ट को सक्रिय करने के लिए पीड़ित को संपादक पहुंच के साथ कनेक्ट करना होगा।
ऐप स्क्रिप्ट को निष्पादित करने के लिए उपयोग किया जाने वाला टोकन ट्रिगर के निर्माता का होगा, भले ही फ़ाइल को अन्य उपयोगकर्ताओं द्वारा संपादक के रूप में खोला गया हो।
यदि किसी ने आपके साथ एक दस्तावेज़ साझा किया है जिसमें ऐप स्क्रिप्ट और ट्रिगर है जो ऐप स्क्रिप्ट के हेड का उपयोग करता है (निश्चित तैनाती नहीं), तो आप ऐप स्क्रिप्ट कोड को संशोधित कर सकते हैं (उदाहरण के लिए चुराने वाले टोकन फ़ंक्शन जोड़ना), इसे एक्सेस कर सकते हैं, और ऐप स्क्रिप्ट उस उपयोगकर्ता की अनुमतियों के साथ निष्पादित होगी जिसने आपके साथ दस्तावेज़ साझा किया! (ध्यान दें कि मालिक का OAuth टोकन ट्रिगर बनाए जाने पर दिए गए एक्सेस स्कोप के रूप में होगा)।
एक अधिसूचना स्क्रिप्ट के निर्माता को भेजी जाएगी जिसमें संकेत दिया जाएगा कि किसी ने स्क्रिप्ट को संशोधित किया है (क्या अलर्ट को रोकने के लिए जीमेल अनुमतियों का उपयोग करने के बारे में?)
यदि एक हमलावर ऐप स्क्रिप्ट के स्कोप को संशोधित करता है, तो अपडेट दस्तावेज़ पर लागू नहीं होंगे जब तक कि एक नया ट्रिगर परिवर्तनों के साथ नहीं बनाया जाता। इसलिए, एक हमलावर ट्रिगर में सेट किए गए स्कोप से अधिक स्कोप के साथ मालिक के निर्माता टोकन को चुराने में असमर्थ होगा।
जब आप एक दस्तावेज़ साझा करने के लिए एक लिंक बनाते हैं, तो एक लिंक इस तरह का बनाया जाता है: https://docs.google.com/spreadsheets/d/1i5[...]aIUD/edit
यदि आप "/edit" के अंत को "/copy" में बदलते हैं, तो इसे एक्सेस करने के बजाय गूगल आपसे पूछेगा कि क्या आप दस्तावेज़ की एक प्रति उत्पन्न करना चाहते हैं:
यदि उपयोगकर्ता इसे कॉपी करता है और इसे एक्सेस करता है, तो दस्तावेज़ की सामग्री और ऐप स्क्रिप्ट दोनों कॉपी की जाएंगी, हालाँकि ट्रिगर्स नहीं, इसलिए कुछ भी निष्पादित नहीं होगा।
ध्यान दें कि ऐप स्क्रिप्ट को एक वेब एप्लिकेशन के रूप में साझा करना भी संभव है (ऐप स्क्रिप्ट के संपादक में, एक वेब एप्लिकेशन के रूप में तैनात करें), लेकिन इस तरह का एक अलर्ट दिखाई देगा:
इसके बाद आवश्यक अनुमतियों के लिए विशिष्ट OAuth प्रॉम्प्ट आएगा।
आप एक एकत्रित टोकन का परीक्षण कर सकते हैं ताकि ईमेल सूचीबद्ध कर सकें:
उपयोगकर्ता का कैलेंडर सूचीबद्ध करें:
स्थिरता के लिए एक विकल्प होगा एक दस्तावेज़ बनाना और getToken फ़ंक्शन के लिए एक ट्रिगर जोड़ना और दस्तावेज़ को हमलावर के साथ साझा करना ताकि हर बार जब हमलावर फ़ाइल खोलता है, वह पीड़ित का टोकन निकालता है।
यह भी संभव है कि एक App Script बनाई जाए और इसे हर X समय (जैसे हर मिनट, घंटे, दिन...) ट्रिगर किया जाए। एक हमलावर जिसने पीड़ित के क्रेडेंशियल्स या सत्र को समझौता किया है, वह एक App Script समय ट्रिगर सेट कर सकता है और हर दिन एक बहुत ही विशेषाधिकार प्राप्त OAuth टोकन लीक कर सकता है:
बस एक App Script बनाएं, ट्रिगर्स पर जाएं, Add Trigger पर क्लिक करें, और समय-संचालित के रूप में घटना स्रोत का चयन करें और उन विकल्पों का चयन करें जो आपके लिए सबसे उपयुक्त हैं:
यह एक सुरक्षा अलर्ट ईमेल और आपके मोबाइल पर इस बारे में एक पुश संदेश बनाएगा।
इसके अलावा, यदि किसी ने आपके साथ संपादक पहुंच के साथ एक दस्तावेज़ साझा किया है, तो आप दस्तावेज़ के अंदर App Scripts उत्पन्न कर सकते हैं और दस्तावेज़ का OWNER (निर्माता) App Script का मालिक होगा।
इसका मतलब है, कि दस्तावेज़ का निर्माता किसी भी App Script का निर्माता के रूप में दिखाई देगा जिसे कोई भी संपादक पहुंच के साथ इसके अंदर बनाता है।
इसका मतलब यह भी है कि App Script को दस्तावेज़ के निर्माता के Workspace वातावरण द्वारा विश्वसनीय माना जाएगा।
इसका मतलब यह भी है कि यदि एक App Script पहले से मौजूद है और लोगों ने पहुँच दी है, तो दस्तावेज़ पर संपादक अनुमति वाले कोई भी व्यक्ति इसे संशोधित कर सकता है और उस पहुंच का दुरुपयोग कर सकता है।
इसका दुरुपयोग करने के लिए आपको लोगों को App Script को ट्रिगर करने की भी आवश्यकता है। और एक अच्छा ट्रिक है कि स्क्रिप्ट को एक वेब ऐप के रूप में प्रकाशित करें। जब लोग जो पहले से पहुँच दे चुके हैं, वेब पृष्ठ तक पहुँचते हैं, तो वे App Script को ट्रिगर करेंगे (यह <img>
टैग का उपयोग करके भी काम करता है)।
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE) GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)