GCP - Cloudfunctions 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)
Cloud Functions के बारे में अधिक जानकारी:
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
इन विशेषाधिकारों के साथ एक हमलावर एक Function के कोड को संशोधित कर सकता है और यहां तक कि संलग्न सेवा खाते को भी संशोधित कर सकता है जिसका लक्ष्य टोकन को एक्सफिल्ट्रेट करना है।
Cloud functions को तैनात करने के लिए आपको डिफ़ॉल्ट कंप्यूट सेवा खाते या उस सेवा खाते पर actAs अनुमतियों की भी आवश्यकता होगी जिसका उपयोग छवि बनाने के लिए किया जाता है।
कुछ अतिरिक्त विशेषाधिकार जैसे कि संस्करण 1 cloudfunctions के लिए .call
अनुमति या फंक्शन को ट्रिगर करने के लिए role/run.invoker
भूमिका की आवश्यकता हो सकती है।
यदि आपको त्रुटि Permission 'run.services.setIamPolicy' denied on resource...
मिलती है, तो इसका कारण यह है कि आप --allow-unauthenticated
पैरामीटर का उपयोग कर रहे हैं और आपके पास इसके लिए पर्याप्त अनुमतियाँ नहीं हैं।
इस विधि के लिए एक्सप्लॉइट स्क्रिप्ट यहाँ मिल सकती है।
cloudfunctions.functions.sourceCodeSet
इस अनुमति के साथ आप एक साइन किया हुआ URL प्राप्त कर सकते हैं ताकि एक फ़ाइल को एक फ़ंक्शन बकेट में अपलोड किया जा सके (लेकिन फ़ंक्शन का कोड नहीं बदलेगा, आपको इसे अभी भी अपडेट करना होगा)
हम attackers के दृष्टिकोण से केवल इस अनुमति की उपयोगिता के बारे में निश्चित नहीं हैं, लेकिन जानना अच्छा है।
cloudfunctions.functions.setIamPolicy
, iam.serviceAccounts.actAs
Privilege को बढ़ाने के लिए अपने आप को पिछले .update
या .create
अधिकार दें।
cloudfunctions.functions.update
केवल cloudfunctions
अनुमतियों के साथ, बिना iam.serviceAccounts.actAs
के आप फंक्शन को अपडेट नहीं कर पाएंगे, इसलिए यह एक वैध प्रिवेस्क नहीं है।
यदि आपके पास बकेट पर पढ़ने और लिखने की पहुंच है, तो आप कोड में परिवर्तनों की निगरानी कर सकते हैं और जब भी बकेट में अपडेट होता है, आप अपने कोड के साथ नए कोड को अपडेट कर सकते हैं ताकि Cloud Function का नया संस्करण प्रस्तुत किए गए बैकडोर कोड के साथ चल सके।
आप हमले के बारे में अधिक जानकारी यहाँ देख सकते हैं:
हालांकि, आप इसका उपयोग तीसरे पक्ष के Cloud Functions को पूर्व-समझौता करने के लिए नहीं कर सकते क्योंकि यदि आप अपने खाते में बकेट बनाते हैं और इसे सार्वजनिक अनुमतियाँ देते हैं ताकि बाहरी प्रोजेक्ट उस पर लिख सके, तो आपको निम्नलिखित त्रुटि मिलती है:
हालांकि, इसका उपयोग DoS हमलों के लिए किया जा सकता है।
जब एक Cloud Function बनाई जाती है, तो प्रोजेक्ट के आर्टिफैक्ट रजिस्ट्री में एक नया डॉकर इमेज पुश किया जाता है। मैंने इमेज को एक नए के साथ संशोधित करने की कोशिश की, और यहां तक कि वर्तमान इमेज (और cache
इमेज) को भी हटाने की कोशिश की, लेकिन कुछ भी नहीं बदला, क्लाउड फंक्शन काम करता रहा। इसलिए, शायद यह बकेट के साथ एक रेस कंडीशन हमले का दुरुपयोग करना संभव हो सकता है ताकि डॉकर कंटेनर को बदला जा सके जो चलाया जाएगा, लेकिन संग्रहीत इमेज को केवल संशोधित करना Cloud Function को समझौता करने के लिए संभव नहीं है।
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE) GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)