GCP - Understanding Domain-Wide Delegation
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)
This post is the introduction of https://www.hunters.security/en/blog/delefriend-a-newly-discovered-design-flaw-in-domain-wide-delegation-could-leave-google-workspace-vulnerable-for-takeover which can be accessed for more details.
Google Workspace का Domain-Wide delegation एक पहचान वस्तु, चाहे वह external app हो जो Google Workspace Marketplace से हो या एक आंतरिक GCP Service Account, को उपयोगकर्ताओं की ओर से Workspace में डेटा तक पहुँचने की अनुमति देता है। यह सुविधा, जो Google APIs या सेवाओं के साथ बातचीत करने वाले ऐप्स के लिए महत्वपूर्ण है जिन्हें उपयोगकर्ता अनुकरण की आवश्यकता होती है, कार्यक्षमता को बढ़ाती है और कार्यों को स्वचालित करके मानव त्रुटियों को कम करती है। OAuth 2.0 का उपयोग करते हुए, ऐप डेवलपर्स और प्रशासक इन सेवा खातों को उपयोगकर्ता डेटा तक पहुँच प्रदान कर सकते हैं बिना व्यक्तिगत उपयोगकर्ता की सहमति के। Google Workspace दो मुख्य प्रकार की वैश्विक प्रतिनिधि वस्तु पहचान बनाने की अनुमति देता है:
GWS Applications: Workspace Marketplace से ऐप्स को एक प्रतिनिधि पहचान के रूप में सेट किया जा सकता है। Marketplace में उपलब्ध होने से पहले, प्रत्येक Workspace ऐप का Google द्वारा समीक्षा की जाती है ताकि संभावित दुरुपयोग को कम किया जा सके। जबकि यह दुरुपयोग के जोखिम को पूरी तरह से समाप्त नहीं करता, यह ऐसे घटनाओं के होने की कठिनाई को काफी बढ़ा देता है।
GCP Service Account: GCP Service Accounts के बारे में अधिक जानें।
यह इस तरह है कि एक GCP Service Account Google APIs को अन्य पहचान के लिए Google Workspace में पहुँच सकता है:
Identity एक JWT बनाता है: पहचान सेवा खाते की निजी कुंजी (JSON कुंजी जोड़ी फ़ाइल का हिस्सा) का उपयोग करके एक JWT पर हस्ताक्षर करती है। यह JWT सेवा खाते, अनुकरण करने के लिए लक्षित उपयोगकर्ता, और REST API के लिए अनुरोधित OAuth स्कोप के बारे में दावे शामिल करता है।
Identity JWT का उपयोग करके एक एक्सेस टोकन का अनुरोध करता है: ऐप/उपयोगकर्ता JWT का उपयोग करके Google के OAuth 2.0 सेवा से एक एक्सेस टोकन का अनुरोध करता है। अनुरोध में लक्षित उपयोगकर्ता (उपयोगकर्ता का Workspace ईमेल) और जिन स्कोप के लिए पहुँच का अनुरोध किया गया है, शामिल होते हैं।
Google की OAuth 2.0 सेवा एक एक्सेस टोकन लौटाती है: एक्सेस टोकन सेवा खाते के अधिकार का प्रतिनिधित्व करता है कि वह निर्दिष्ट स्कोप के लिए उपयोगकर्ता की ओर से कार्य कर सके। यह टोकन आमतौर पर अल्पकालिक होता है और इसे समय-समय पर (ऐप की आवश्यकता के अनुसार) नवीनीकरण करना आवश्यक है। यह समझना आवश्यक है कि JWT टोकन में निर्दिष्ट OAuth स्कोप की वैधता और परिणामस्वरूप एक्सेस टोकन पर प्रभाव होता है। उदाहरण के लिए, कई स्कोप वाले एक्सेस टोकन कई REST API ऐप्स के लिए वैधता रखेंगे।
Identity एक्सेस टोकन का उपयोग करके Google APIs को कॉल करता है: अब एक प्रासंगिक एक्सेस टोकन के साथ, सेवा आवश्यक REST API तक पहुँच सकती है। ऐप इस एक्सेस टोकन का उपयोग Google APIs के लिए अपने HTTP अनुरोधों के "Authorization" हेडर में करता है। ये APIs टोकन का उपयोग करके अनुकरण की गई पहचान की पुष्टि करती हैं और यह सुनिश्चित करती हैं कि इसके पास आवश्यक प्राधिकरण है।
Google APIs अनुरोधित डेटा लौटाती हैं: यदि एक्सेस टोकन वैध है और सेवा खाते के पास उचित प्राधिकरण है, तो Google APIs अनुरोधित डेटा लौटाती हैं। उदाहरण के लिए, निम्नलिखित चित्र में, हमने लक्षित Workspace उपयोगकर्ता के साथ जुड़े सभी Gmail संदेश ID की सूची बनाने के लिए users.messages.list विधि का उपयोग किया है।
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)