GCP - Cloudfunctions Privesc
cloudfunctions
Cloud Functions के बारे में अधिक जानकारी:
GCP - Cloud Functions Enumcloudfunctions.functions.create
, cloudfunctions.functions.sourceCodeSet
, iam.serviceAccounts.actAs
cloudfunctions.functions.create
, cloudfunctions.functions.sourceCodeSet
, iam.serviceAccounts.actAs
इन विशेषाधिकारों के साथ एक हमलावर मनमाने (दुष्ट) कोड के साथ एक नया Cloud Function बना सकता है और इसे एक Service Account सौंप सकता है। फिर, विशेषाधिकारों को बढ़ाने के लिए मेटाडेटा से Service Account टोकन लीक करें। फंक्शन को ट्रिगर करने के लिए कुछ विशेषाधिकारों की आवश्यकता हो सकती है।
इस विधि के लिए शोषण स्क्रिप्ट यहाँ और यहाँ मिल सकती हैं और प्रीबिल्ट .zip फ़ाइल यहाँ मिल सकती है।
cloudfunctions.functions.update
, cloudfunctions.functions.sourceCodeSet
, iam.serviceAccounts.actAs
cloudfunctions.functions.update
, cloudfunctions.functions.sourceCodeSet
, iam.serviceAccounts.actAs
इन विशेषाधिकारों के साथ एक हमलावर एक Function के कोड को संशोधित कर सकता है और यहां तक कि संलग्न सेवा खाते को भी संशोधित कर सकता है जिसका लक्ष्य टोकन को एक्सफिल्ट्रेट करना है।
Cloud functions को तैनात करने के लिए आपको डिफ़ॉल्ट कंप्यूट सेवा खाते पर या उस सेवा खाते पर actAs अनुमतियों की भी आवश्यकता होगी जिसका उपयोग छवि बनाने के लिए किया जाता है।
कुछ अतिरिक्त विशेषाधिकार जैसे कि संस्करण 1 cloudfunctions के लिए .call
अनुमति या फंक्शन को ट्रिगर करने के लिए role/run.invoker
भूमिका की आवश्यकता हो सकती है।
यदि आपको त्रुटि Permission 'run.services.setIamPolicy' denied on resource...
मिलती है, तो इसका कारण यह है कि आप --allow-unauthenticated
पैरामीटर का उपयोग कर रहे हैं और आपके पास इसके लिए पर्याप्त अनुमतियाँ नहीं हैं।
इस विधि के लिए एक्सप्लॉइट स्क्रिप्ट यहाँ मिल सकती है।
cloudfunctions.functions.sourceCodeSet
cloudfunctions.functions.sourceCodeSet
इस अनुमति के साथ आप एक साइन किया हुआ URL प्राप्त कर सकते हैं ताकि एक फ़ाइल को एक फ़ंक्शन बकेट में अपलोड किया जा सके (लेकिन फ़ंक्शन का कोड नहीं बदलेगा, आपको इसे अभी भी अपडेट करना होगा)
हम attackers के दृष्टिकोण से केवल इस अनुमति की उपयोगिता के बारे में निश्चित नहीं हैं, लेकिन जानना अच्छा है।
cloudfunctions.functions.setIamPolicy
, iam.serviceAccounts.actAs
cloudfunctions.functions.setIamPolicy
, iam.serviceAccounts.actAs
अपने लिए किसी भी पिछले .update
या .create
विशेषाधिकार को बढ़ाने के लिए दें।
cloudfunctions.functions.update
cloudfunctions.functions.update
केवल cloudfunctions
अनुमतियों के साथ, बिना iam.serviceAccounts.actAs
के आप फंक्शन को अपडेट नहीं कर पाएंगे, इसलिए यह एक मान्य प्रिवेस्क नहीं है।
बकेट लिखने की अनुमतियाँ
आप सोच सकते हैं कि बकेट पर लिखने की अनुमतियों वाला एक attacker कोड को संशोधित करने में सक्षम होगा function_code.zip
को ओवरराइट करके और फिर फंक्शन को मनमाने कोड को निष्पादित करने के लिए बना देगा।
हालांकि, यह सच नहीं है, बकेट के अंदर कोड को ओवरराइट करने से निष्पादित हो रहे कोड में कोई परिवर्तन नहीं होगा।
संदर्भ
Last updated