GWS - App Scripts
App Scripts
App Scripts कोड है जो तब सक्रिय होगा जब कोई उपयोगकर्ता जिसके पास संपादक की अनुमति है, उस दस्तावेज़ तक पहुंचता है जिसके साथ App Script जुड़ा हुआ है और OAuth प्रॉम्प्ट को स्वीकार करने के बाद। इन्हें App Script के मालिक द्वारा हर निश्चित समय पर निष्पादित करने के लिए भी सेट किया जा सकता है (Persistence).
Create App Script
App Script बनाने के कई तरीके हैं, हालांकि सबसे सामान्य तरीके Google Document (किसी भी प्रकार का) से और स्वतंत्र परियोजना के रूप में हैं:
App Script Scenario
Create Google Sheet with App Script
एक App Script बनाने से शुरू करें, इस परिदृश्य के लिए मेरी सिफारिश है कि एक Google Sheet बनाएं और Extensions > App Scripts
पर जाएं, इससे आपके लिए शीट से जुड़ी एक नई App Script खुलेगी।
Leak token
OAuth टोकन तक पहुंच देने के लिए आपको Services +
पर क्लिक करना होगा और जैसे स्कोप जोड़ने होंगे:
AdminDirectory: निर्देशिका के उपयोगकर्ताओं और समूहों तक पहुंच (यदि उपयोगकर्ता के पास पर्याप्त अनुमतियाँ हैं)
Gmail: Gmail डेटा तक पहुंचने के लिए
Drive: ड्राइव डेटा तक पहुंचने के लिए
Google Sheets API: ताकि यह ट्रिगर के साथ काम करे
अपने लिए आवश्यक स्कोप बदलने के लिए आप प्रोजेक्ट सेटिंग्स पर जा सकते हैं और सक्षम कर सकते हैं: Show "appsscript.json" manifest file in editor
.
अनुरोध को कैप्चर करने के लिए आप बस चला सकते हैं:
Permissions requested to execute the App Script:
जब एक बाहरी अनुरोध किया जाता है, तो OAuth प्रॉम्प्ट भी बाहरी एंडपॉइंट्स तक पहुँचने की अनुमति मांगेगा।
Create Trigger
एक बार जब ऐप पढ़ लिया जाए, तो ⏰ ट्रिगर्स पर क्लिक करें ताकि एक ट्रिगर बनाया जा सके। फंक्शन के लिए getToken
चुनें, जो तैनाती पर Head
पर चलता है, इवेंट स्रोत में From spreadsheet
चुनें और इवेंट प्रकार में On open
या On edit
(आपकी आवश्यकताओं के अनुसार) चुनें और सहेजें।
ध्यान दें कि आप Executions टैब में ऐप स्क्रिप्ट के रन की जांच कर सकते हैं यदि आप कुछ डिबग करना चाहते हैं।
Sharing
ट्रिगर को App Script को सक्रिय करने के लिए पीड़ित को Editor Access के साथ कनेक्ट करना होगा।
App Script को निष्पादित करने के लिए उपयोग किया जाने वाला token ट्रिगर के निर्माता का होगा, भले ही फ़ाइल को अन्य उपयोगकर्ताओं द्वारा संपादक के रूप में खोला गया हो।
Abusing Shared With Me documents
यदि किसी ने आपके साथ एक दस्तावेज़ साझा किया है जिसमें App Scripts और ट्रिगर है जो ऐप स्क्रिप्ट के Head का उपयोग करता है (निश्चित तैनाती नहीं), तो आप ऐप स्क्रिप्ट कोड को संशोधित कर सकते हैं (उदाहरण के लिए, चोरी करने वाले टोकन फ़ंक्शन जोड़ना), इसे एक्सेस कर सकते हैं, और App Script उस उपयोगकर्ता की अनुमतियों के साथ निष्पादित होगा जिसने आपके साथ दस्तावेज़ साझा किया! (ध्यान दें कि मालिक का OAuth टोकन ट्रिगर बनाए जाने पर दिए गए एक्सेस स्कोप के रूप में होगा)।
एक अधिसूचना स्क्रिप्ट के निर्माता को भेजी जाएगी जिसमें संकेत दिया जाएगा कि किसी ने स्क्रिप्ट को संशोधित किया है (क्या अलर्ट को रोकने के लिए फ़िल्टर उत्पन्न करने के लिए जीमेल अनुमतियों का उपयोग करने के बारे में?)
यदि एक हमलावर App Script के स्कोप को संशोधित करता है, तो अपडेट दस्तावेज़ पर लागू नहीं होंगे जब तक कि एक नया ट्रिगर परिवर्तनों के साथ नहीं बनाया जाता। इसलिए, एक हमलावर ट्रिगर में सेट किए गए स्कोप से अधिक स्कोप के साथ मालिक के निर्माता टोकन को चुराने में असमर्थ होगा।
Copying instead of sharing
जब आप एक दस्तावेज़ साझा करने के लिए एक लिंक बनाते हैं, तो एक लिंक इस तरह का बनाया जाता है: https://docs.google.com/spreadsheets/d/1i5[...]aIUD/edit
यदि आप "/edit" के अंत को "/copy" में बदलते हैं, तो इसे एक्सेस करने के बजाय गूगल आपसे पूछेगा कि क्या आप दस्तावेज़ की एक प्रति उत्पन्न करना चाहते हैं:
यदि उपयोगकर्ता इसे कॉपी करता है और इसे एक्सेस करता है, तो दस्तावेज़ की सामग्री और App Scripts दोनों को कॉपी किया जाएगा, हालाँकि ट्रिगर्स नहीं, इसलिए कुछ भी निष्पादित नहीं होगा।
Sharing as Web Application
ध्यान दें कि App Script को एक वेब एप्लिकेशन के रूप में साझा करना भी संभव है (App Script के संपादक में, एक वेब एप्लिकेशन के रूप में तैनात करें), लेकिन एक चेतावनी इस तरह की दिखाई देगी:
इसके बाद आवश्यक अनुमतियों के लिए विशिष्ट OAuth प्रॉम्प्ट आएगा।
Testing
आप एक एकत्रित टोकन का परीक्षण कर सकते हैं ताकि ईमेल सूचीबद्ध कर सकें:
उपयोगकर्ता का कैलेंडर सूचीबद्ध करें:
App Script as Persistence
एक विकल्प स्थिरता के लिए एक दस्तावेज़ बनाना और getToken फ़ंक्शन के लिए एक ट्रिगर जोड़ना होगा और दस्तावेज़ को हमलावर के साथ साझा करना ताकि हर बार जब हमलावर फ़ाइल खोलता है, वह पीड़ित का टोकन निकालता है।
यह भी संभव है कि एक App Script बनाई जाए और इसे हर X समय (जैसे हर मिनट, घंटे, दिन...) ट्रिगर किया जाए। एक हमलावर जिसने पीड़ित के क्रेडेंशियल्स या सत्र को समझौता किया है, वह एक App Script समय ट्रिगर सेट कर सकता है और हर दिन एक बहुत ही विशेषाधिकार प्राप्त OAuth टोकन लीक कर सकता है:
बस एक App Script बनाएं, ट्रिगर्स पर जाएं, Add Trigger पर क्लिक करें, और घटना स्रोत के रूप में Time-driven चुनें और उन विकल्पों का चयन करें जो आपके लिए सबसे उपयुक्त हैं:
यह एक सुरक्षा अलर्ट ईमेल और आपके मोबाइल पर इस बारे में एक पुश संदेश बनाएगा।
Shared Document Unverified Prompt Bypass
इसके अलावा, यदि किसी ने आपके साथ साझा किया है एक दस्तावेज़ जिसमें संपादक पहुंच है, तो आप दस्तावेज़ के अंदर App Scripts उत्पन्न कर सकते हैं और दस्तावेज़ का OWNER (निर्माता) App Script का मालिक होगा।
इसका मतलब है, कि दस्तावेज़ का निर्माता किसी भी App Script का निर्माता के रूप में दिखाई देगा जिसे कोई भी संपादक पहुंच के साथ इसके अंदर बनाता है।
इसका मतलब यह भी है कि App Script को दस्तावेज़ के निर्माता के Workspace वातावरण द्वारा विश्वसनीय माना जाएगा।
इसका मतलब यह भी है कि यदि एक App Script पहले से मौजूद है और लोगों ने पहुँच दी है, तो दस्तावेज़ पर संपादक अनुमति वाले कोई भी व्यक्ति इसे संशोधित कर सकता है और उस पहुंच का दुरुपयोग कर सकता है।
इसका दुरुपयोग करने के लिए आपको लोगों को App Script को ट्रिगर करने की भी आवश्यकता है। और एक अच्छा ट्रिक है कि स्क्रिप्ट को एक वेब ऐप के रूप में प्रकाशित करें। जब लोग जो पहले से पहुँच दे चुके हैं, वेब पृष्ठ तक पहुँचते हैं, तो वे App Script को ट्रिगर करेंगे (यह <img>
टैग का उपयोग करके भी काम करता है)।
Last updated