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 creates a JWT: पहचान सेवा खाते की निजी कुंजी (JSON कुंजी जोड़ी फ़ाइल का हिस्सा) का उपयोग करके एक JWT पर हस्ताक्षर करती है। यह JWT सेवा खाते, अनुकरण करने के लिए लक्षित उपयोगकर्ता, और REST API के लिए अनुरोधित OAuth स्कोप के बारे में दावे शामिल करता है।
The Identity uses the JWT to request an access token: ऐप/उपयोगकर्ता JWT का उपयोग करके Google के OAuth 2.0 सेवा से एक एक्सेस टोकन का अनुरोध करता है। अनुरोध में लक्षित उपयोगकर्ता (उपयोगकर्ता का Workspace ईमेल) और जिन स्कोप के लिए एक्सेस का अनुरोध किया गया है, शामिल होते हैं।
Google's OAuth 2.0 service returns an access token: एक्सेस टोकन सेवा खाते के अधिकार का प्रतिनिधित्व करता है कि वह निर्दिष्ट स्कोप के लिए उपयोगकर्ता की ओर से कार्य करे। यह टोकन आमतौर पर अल्पकालिक होता है और इसे समय-समय पर (ऐप की आवश्यकता के अनुसार) नवीनीकरण करना आवश्यक होता है। यह समझना आवश्यक है कि JWT टोकन में निर्दिष्ट OAuth स्कोप की वैधता और परिणामस्वरूप एक्सेस टोकन पर प्रभाव होता है। उदाहरण के लिए, कई स्कोप वाले एक्सेस टोकन कई REST API ऐप्स के लिए वैधता रखेंगे।
The Identity uses the access token to call Google APIs: अब एक प्रासंगिक एक्सेस टोकन के साथ, सेवा आवश्यक REST API तक पहुँच सकती है। ऐप इस एक्सेस टोकन का उपयोग Google APIs के लिए अपने HTTP अनुरोधों के "Authorization" हेडर में करता है। ये APIs टोकन का उपयोग अनुकरण की गई पहचान की पुष्टि करने और यह सुनिश्चित करने के लिए करती हैं कि इसके पास आवश्यक प्राधिकरण है।
Google APIs return the requested data: यदि एक्सेस टोकन वैध है और सेवा खाते के पास उचित प्राधिकरण है, तो 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)