GCP - IAM Privesc
IAM
IAM के बारे में अधिक जानकारी पाएं:
pageGCP - IAM, Principals & Org Policies Enumiam.roles.update
(iam.roles.get
)
iam.roles.update
(iam.roles.get
)उल्लिखित अनुमतियों वाले हमलावर को आपके द्वारा निर्धारित एक भूमिका को अपडेट करने की क्षमता होगी और वह आपको अन्य संसाधनों के लिए अतिरिक्त अनुमतियाँ देने में सक्षम होगा:
आप एक स्क्रिप्ट पा सकते हैं जो एक वल्नरबल वातावरण का स्वचालित रूप से निर्माण, शोषण और सफाई करने में मदद करता है और इस विशेषाधिकार का दुरुपयोग करने के लिए एक पायथन स्क्रिप्ट यहाँ मिलेगा। अधिक जानकारी के लिए मूल शोध देखें।
iam.serviceAccounts.getAccessToken
(iam.serviceAccounts.get
)
iam.serviceAccounts.getAccessToken
(iam.serviceAccounts.get
)उल्लिखित अनुमतियों वाले एक हमलावर को सेवा खाते के लिए एक एक्सेस टोकन का अनुरोध करने की स्वीकृति होगी, इसलिए हमें एक सेवा खाते का एक्सेस टोकन अनुरोध करने की संभावना है जिसमें हमारे से अधिक अधिकार वाला एक्सेस टोकन हो सकता है।
आप एक स्क्रिप्ट पा सकते हैं जो एक वल्नरबल वातावरण का स्वचालित रूप से निर्माण, शोषण और सफाई करने में मदद करता है यहाँ और इस विशेषाधिकार का दुरुपयोग करने के लिए एक पायथन स्क्रिप्ट यहाँ मिलेगा। अधिक जानकारी के लिए मूल शोध देखें।
iam.serviceAccountKeys.create
iam.serviceAccountKeys.create
उल्लिखित अनुमतियों वाले एक हमलावर को सेवा खाते के लिए एक उपयोगकर्ता प्रबंधित कुंजी बनाने की स्वीकृति होगी, जिससे हमें उस सेवा खाते के रूप में GCP तक पहुंचने की अनुमति होगी।
आप एक स्क्रिप्ट पा सकते हैं जो एक वल्नरेबल वातावरण की सृजन, शोषण और सफाई को स्वचालित करने के लिए यहाँ करने में मदद करता है और इस विशेषाधिकार का दुरुपयोग करने के लिए एक पायथन स्क्रिप्ट यहाँ है। अधिक जानकारी के लिए मूल शोध देखें।
नोट करें कि iam.serviceAccountKeys.update
कुंजी को संशोधित करने के लिए काम नहीं करेगा क्योंकि इसे करने के लिए अनुमतियाँ iam.serviceAccountKeys.create
भी आवश्यक हैं।
iam.serviceAccounts.implicitDelegation
iam.serviceAccounts.implicitDelegation
यदि आपके पास एक सेवा खाता पर iam.serviceAccounts.getAccessToken
अनुमति वाले तीसरे सेवा खाते पर iam.serviceAccounts.implicitDelegation
अनुमति है, तो आप implicitDelegation का उपयोग करके उस तीसरे सेवा खाते के लिए एक टोकन बना सकते हैं। यहाँ एक आरेख है जो स्पष्ट करने में मदद करेगा।
आप एक स्क्रिप्ट पा सकते हैं जो एक वल्नरेबल वातावरण की सृजन, शोषण और सफाई को स्वचालित करने के लिए यहाँ करने में मदद करता है और इस विशेषाधिकार का दुरुपयोग करने के लिए एक पायथन स्क्रिप्ट यहाँ है। अधिक जानकारी के लिए मूल शोध देखें।
ध्यान दें कि दस्तावेज़ीकरण के अनुसार, धनादान केवल एक टोकन उत्पन्न करने के लिए काम करता है जो generateAccessToken() विधि का उपयोग करता है।
iam.serviceAccounts.signBlob
iam.serviceAccounts.signBlob
उल्लंघनकर्ता जिसके पास उल्लिखित अनुमतियाँ हैं, वह GCP में विचित्र payloads के साइन कर सकेगा। इसलिए यह संभव होगा कि एक असाइन किए गए JWT को बनाया जाए और फिर हम उसे उस SA द्वारा साइन करने के लिए एक ब्लॉब के रूप में भेजें। अधिक जानकारी के लिए यह पढ़ें।
आप एक स्क्रिप्ट पा सकते हैं जो एक वल्नरेबल वातावरण की सृजन, शोषण और सफाई को स्वचालित करने के लिए यहाँ करने में मदद करता है और इस विशेषाधिकार का दुरुपयोग करने के लिए एक पायथन स्क्रिप्ट यहाँ और यहाँ है। अधिक जानकारी के लिए मूल शोध देखें।
iam.serviceAccounts.signJwt
iam.serviceAccounts.signJwt
उल्लंघनकर्ता जिसके पास उल्लिखित अनुमतियाँ हैं, वह वेल-फॉर्मेड JSON वेब टोकन (JWTs) को साइन कर सकेगा। पिछली विधि के साथ अंतर यह है कि जब google को एक JWT वाला ब्लॉब साइन करने के लिए नहीं बनाना होता है, हम signJWT विधि का उपयोग करते हैं जो पहले से ही एक JWT की उम्मीद करता है। इसे उपयोग करना आसान बनाता है लेकिन आप केवल JWT साइन कर सकते हैं बाइट्स की बजाय।
आप एक स्क्रिप्ट पा सकते हैं जो एक वल्नरेबल वातावरण की सृजन, शोषण और सफाई को स्वचालित करने के लिए यहाँ करने में मदद करता है और इस विशेषाधिकार का दुरुपयोग करने के लिए एक पायथन स्क्रिप्ट यहाँ है। अधिक जानकारी के लिए मूल शोध देखें।
iam.serviceAccounts.setIamPolicy
iam.serviceAccounts.setIamPolicy
उल्लंघनकर्ता जिसके पास उल्लिखित अनुमतियाँ हैं, वह सेवा खातों में IAM नीतियों को जोड़ सकेगा। आप इसका दुरुपयोग करके खुद को उस अनुमतियों को प्रदान कर सकते हैं जिनकी आपको सेवा खाता का प्रतिनिधित्व करने की आवश्यकता है। निम्नलिखित उदाहरण में हम खुद को दिखाने के लिए roles/iam.serviceAccountTokenCreator
भूमिका के उत्कृष्ट SA पर दे रहे हैं:
iam.serviceAccounts.actAs
iam.serviceAccounts.actAs
iam.serviceAccounts.actAs अनुमति AWS की iam:PassRole अनुमति की तरह है। यह कार्यों को निष्पादित करने के लिए अत्यावश्यक है, जैसे कि कम्प्यूट इंजन इंस्टेंस आरंभ करना, क्योंकि यह "कार्रवाई करने की" एक सेवा खाते के रूप में "कार्रवाई करने" की क्षमता प्रदान करता है, सुनिश्चित करता है कि अनुमति प्रबंधन सुरक्षित है। इसके बिना, उपयोगकर्ताओं को अनुचित पहुंच मिल सकती है। इसके अतिरिक्त, iam.serviceAccounts.actAs का शोषण करना विभिन्न विधियों को शामिल करता है, प्रत्येक के लिए एक सेट की आवश्यकता होती है, जो एक ही चाहते हैं।
सेवा खाता प्रतिनिधित्व
सेवा खाता प्रतिनिधित्व करना नए और बेहतर विशेषाधिकार प्राप्त करने के लिए बहुत उपयोगी हो सकता है। आप एक और सेवा खाता प्रतिनिधित्व कर सकते हैं इसमें तीन तरीके हैं:
RSA निजी कुंजी का उपयोग करके प्रमाणीकरण (ऊपर चर्चित)
Cloud IAM नीतियों का उपयोग करके अधिकृति (यहाँ चर्चा की गई है)
GCP सेवाओं पर नौकरियां डिप्लॉय करना (एक उपयोगकर्ता खाते के कम्प्रमाइज के लिए अधिक लागू)
iam.serviceAccounts.getOpenIdToken
iam.serviceAccounts.getOpenIdToken
उल्लिखित अनुमतियों वाले एक हमलावर एक ओपनआईडी जेडडब्ल्यूटी उत्पन्न कर सकेगा। ये पहचान को दावा करने के लिए उपयोग किए जाते हैं और किसी संसाधन के खिलाफ कोई शर्तमुक्त अधिकृति नहीं लेते।
इस रोचक पोस्ट के अनुसार, आवश्यक है कि एडियंस (सेवा जहां आप टोकन का उपयोग करना चाहते हैं ताकि प्रमाणीकृत कर सकें) को सूचित किया जाए और आपको गूगल द्वारा हस्ताक्षरित जेडडब्ल्यूटी प्राप्त होगा जिसमें सेवा खाता और जेडटी का एडियंस दिखाता है।
आप एक ओपनआईडीटोकन उत्पन्न कर सकते हैं (यदि आपके पास पहुंच है) के साथ:
फिर आप इसका उपयोग सेवा तक पहुंचने के लिए कर सकते हैं:
कुछ सेवाएं जो इस प्रकार के टोकन के माध्यम से प्रमाणीकरण का समर्थन करती हैं:
Google Cloud Endpoints (यदि Google OIDC का उपयोग किया जा रहा है)
आप एक उदाहरण यहाँ सेवा खाता के पक्ष से ओपनआईडी टोकन बनाने के लिए कैसे कर सकते हैं यहाँ.
संदर्भ
Last updated