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 के बारे में अधिक जानकारी:
GCP - Cloud Functions Enumcloudfunctions.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
अपने लिए किसी भी पिछले .update
या .create
विशेषाधिकार को बढ़ाने के लिए दें।
cloudfunctions.functions.update
केवल cloudfunctions
अनुमतियों के साथ, बिना iam.serviceAccounts.actAs
के आप फंक्शन को अपडेट नहीं कर पाएंगे, इसलिए यह एक मान्य प्रिवेस्क नहीं है।
यदि आपके पास बकेट पर पढ़ने और लिखने की पहुंच है, तो आप कोड में परिवर्तनों की निगरानी कर सकते हैं और जब भी बकेट में अपडेट होता है, आप अपने कोड के साथ नए कोड को अपडेट कर सकते हैं ताकि क्लाउड फंक्शन का नया संस्करण प्रस्तुत किए गए बैकडोर कोड के साथ चल सके।
आप हमले के बारे में अधिक जानकारी देख सकते हैं:
GCP - Storage Privescहालांकि, आप इसका उपयोग तीसरे पक्ष के क्लाउड फंक्शंस को पूर्व-समझौता करने के लिए नहीं कर सकते क्योंकि यदि आप अपने खाते में बकेट बनाते हैं और इसे सार्वजनिक अनुमतियाँ देते हैं ताकि बाहरी प्रोजेक्ट उस पर लिख सके, तो आपको निम्नलिखित त्रुटि मिलती है:
हालांकि, इसका उपयोग DoS हमलों के लिए किया जा सकता है।
जब एक क्लाउड फंक्शन बनाया जाता है, तो प्रोजेक्ट के आर्टिफैक्ट रजिस्ट्री में एक नया डॉकर इमेज पुश किया जाता है। मैंने इमेज को एक नए के साथ संशोधित करने की कोशिश की, और यहां तक कि वर्तमान इमेज (और cache
इमेज) को भी हटाने की कोशिश की और कुछ भी नहीं बदला, क्लाउड फंक्शन काम करता रहा। इसलिए, शायद यह बकेट के साथ रेस कंडीशन हमले का दुरुपयोग करना संभव हो सकता है ताकि डॉकर कंटेनर को बदला जा सके जो चलाया जाएगा लेकिन संग्रहित इमेज को केवल संशोधित करना क्लाउड फंक्शन को समझौता करने के लिए संभव नहीं है।
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE) GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)