GCP - IAM Privesc
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)
IAM के बारे में अधिक जानकारी प्राप्त करें:
GCP - IAM, Principals & Org Policies Enumiam.roles.update
(iam.roles.get
)उल्लेखित अनुमतियों के साथ एक हमलावर आपके लिए असाइन की गई भूमिका को अपडेट करने में सक्षम होगा और आपको अन्य संसाधनों के लिए अतिरिक्त अनुमतियाँ देगा जैसे:
आप यहां एक स्क्रिप्ट पा सकते हैं जो एक vuln वातावरण के निर्माण, शोषण और सफाई को स्वचालित करती है और इस विशेषाधिकार का दुरुपयोग करने के लिए एक पायथन स्क्रिप्ट यहां है। अधिक जानकारी के लिए मूल शोध की जांच करें।
iam.serviceAccounts.getAccessToken
(iam.serviceAccounts.get
)उल्लेखित अनुमतियों के साथ एक हमलावर एक सेवा खाते से संबंधित एक एक्सेस टोकन का अनुरोध करने में सक्षम होगा, इसलिए यह संभव है कि हम एक सेवा खाते का एक्सेस टोकन अनुरोध करें जिसमें हमारे मुकाबले अधिक विशेषाधिकार हों।
आप एक स्क्रिप्ट यहां कमजोर वातावरण के निर्माण, शोषण और सफाई के लिए स्वचालित करने के लिए पा सकते हैं और इस विशेषता का दुरुपयोग करने के लिए एक पायथन स्क्रिप्ट यहां है। अधिक जानकारी के लिए मूल शोध की जांच करें।
iam.serviceAccountKeys.create
उपरोक्त अनुमतियों के साथ एक हमलावर एक सेवा खाते के लिए एक उपयोगकर्ता-प्रबंधित कुंजी बनाने में सक्षम होगा, जो हमें उस सेवा खाते के रूप में GCP तक पहुंचने की अनुमति देगा।
आप एक स्क्रिप्ट पा सकते हैं जो एक vuln वातावरण के निर्माण, शोषण और सफाई को स्वचालित करने के लिए यहाँ है और इस विशेषता का दुरुपयोग करने के लिए एक पायथन स्क्रिप्ट यहाँ है। अधिक जानकारी के लिए मूल शोध देखें।
ध्यान दें कि iam.serviceAccountKeys.update
एक SA की कुंजी को संशोधित करने के लिए काम नहीं करेगा क्योंकि ऐसा करने के लिए iam.serviceAccountKeys.create
अनुमति भी आवश्यक है।
iam.serviceAccounts.implicitDelegation
यदि आपके पास एक सेवा खाते पर iam.serviceAccounts.implicitDelegation
अनुमति है जो एक तीसरे सेवा खाते पर iam.serviceAccounts.getAccessToken
अनुमति रखता है, तो आप उस तीसरे सेवा खाते के लिए एक टोकन बनाने के लिए implicitDelegation का उपयोग कर सकते हैं। यहाँ एक चित्र है जो समझाने में मदद करता है।
ध्यान दें कि दस्तावेज़ीकरण के अनुसार, gcloud
का प्रतिनिधित्व केवल generateAccessToken() विधि का उपयोग करके एक टोकन उत्पन्न करने के लिए काम करता है। तो यहाँ आपके पास API का उपयोग करके सीधे एक टोकन प्राप्त करने का तरीका है:
You can find a script to automate the creation, exploit and cleaning of a vuln environment here and a python script to abuse this privilege here. For more information check the original research.
iam.serviceAccounts.signBlob
An attacker with the mentioned permissions will be able to GCP में मनमाने पेलोड्स पर हस्ताक्षर करने में सक्षम होगा. So it'll be possible to SA का एक असाइन किए बिना JWT बनाना और फिर इसे एक ब्लॉब के रूप में भेजना ताकि हम जिस SA को लक्षित कर रहे हैं, उसके द्वारा JWT पर हस्ताक्षर किया जा सके. For more information read this.
You can find a script to automate the creation, exploit and cleaning of a vuln environment here and a python script to abuse this privilege here and here. For more information check the original research.
iam.serviceAccounts.signJwt
An attacker with the mentioned permissions will be able to सही तरीके से बनाए गए JSON वेब टोकन (JWTs) पर हस्ताक्षर करने में सक्षम होगा. The difference with the previous method is that JWT पर हस्ताक्षर करने के लिए हम signJWT विधि का उपयोग करते हैं जो पहले से ही JWT की अपेक्षा करती है. This makes it easier to use but you can only sign JWT instead of any bytes.
You can find a script to automate the creation, exploit and cleaning of a vuln environment here and a python script to abuse this privilege here. For more information check the original research.
iam.serviceAccounts.setIamPolicy
An attacker with the mentioned permissions will be able to सेवा खातों में IAM नीतियाँ जोड़ने में सक्षम होगा. You can abuse it to अपने लिए वह अनुमतियाँ प्रदान करें जिनकी आपको सेवा खाते का अनुकरण करने की आवश्यकता है. In the following example we are granting ourselves the roles/iam.serviceAccountTokenCreator
role over the interesting SA:
You can find a script to automate the creation, exploit and cleaning of a vuln environment here.
iam.serviceAccounts.actAs
The iam.serviceAccounts.actAs permission is like the iam:PassRole permission from AWS. It's essential for executing tasks, like initiating a Compute Engine instance, as it grants the ability to "actAs" a Service Account, ensuring secure permission management. Without this, users might gain undue access. Additionally, exploiting the iam.serviceAccounts.actAs involves various methods, each requiring a set of permissions, contrasting with other methods that need just one.
एक सेवा खाते का अनुकरण करना नए और बेहतर विशेषाधिकार प्राप्त करने के लिए बहुत उपयोगी हो सकता है। आप दूसरे सेवा खाते का अनुकरण करने के तीन तरीके हैं:
प्रमाणीकरण RSA निजी कुंजी का उपयोग करके (ऊपर कवर किया गया)
प्राधिकरण Cloud IAM नीतियों का उपयोग करके (यहां कवर किया गया)
GCP सेवाओं पर नौकरियों को तैनात करना (एक उपयोगकर्ता खाते के समझौते के लिए अधिक लागू)
iam.serviceAccounts.getOpenIdToken
उपरोक्त अनुमतियों के साथ एक हमलावर OpenID JWT उत्पन्न करने में सक्षम होगा। इनका उपयोग पहचान को प्रमाणित करने के लिए किया जाता है और ये किसी संसाधन के खिलाफ किसी निहित प्राधिकरण को अनिवार्य रूप से नहीं ले जाते हैं।
इस दिलचस्प पोस्ट के अनुसार, यह आवश्यक है कि आप दर्शक (सेवा जहां आप टोकन का उपयोग करके प्रमाणित होना चाहते हैं) को इंगित करें और आपको एक JWT प्राप्त होगा जो google द्वारा हस्ताक्षरित होगा, जो सेवा खाते और JWT के दर्शक को इंगित करता है।
आप OpenIDToken उत्पन्न कर सकते हैं (यदि आपके पास पहुंच है) के साथ:
फिर आप इसे सेवा तक पहुँचने के लिए उपयोग कर सकते हैं:
कुछ सेवाएँ जो इस प्रकार के टोकनों के माध्यम से प्रमाणीकरण का समर्थन करती हैं:
Google Cloud Endpoints (यदि Google OIDC का उपयोग कर रहे हैं)
आप एक सेवा खाते की ओर से OpenID टोकन बनाने का उदाहरण यहाँ पा सकते हैं।
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE) GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)