GCP - Cloudbuild Privesc
Reading time: 4 minutes
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें, PRs को HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में सबमिट करके।
cloudbuild
Cloud Build के बारे में अधिक जानकारी के लिए देखें:
cloudbuild.builds.create
, iam.serviceAccounts.actAs
इस अनुमति के साथ आप एक क्लाउड बिल्ड सबमिट कर सकते हैं। cloudbuild मशीन में डिफ़ॉल्ट रूप से cloudbuild Service Account का एक टोकन होगा: <PROJECT_NUMBER>@cloudbuild.gserviceaccount.com
। हालाँकि, आप cloudbuild कॉन्फ़िगरेशन में परियोजना के भीतर किसी भी सेवा खाते को संकेतित कर सकते हैं।
इसलिए, आप बस मशीन को आपके सर्वर पर टोकन को एक्सफिल्ट्रेट करने के लिए कह सकते हैं या इसके अंदर एक रिवर्स शेल प्राप्त कर सकते हैं और खुद को टोकन प्राप्त कर सकते हैं (टोकन वाला फ़ाइल बदल सकता है)।
आप मूल एक्सप्लॉइट स्क्रिप्ट यहाँ GitHub पर पा सकते हैं (लेकिन जिस स्थान से यह टोकन ले रहा था वह मेरे लिए काम नहीं किया)। इसलिए, यहाँ एक स्क्रिप्ट देखें जो एक vuln वातावरण के निर्माण, शोषण और सफाई को स्वचालित करती है और cloudbuild मशीन के अंदर एक रिवर्स शेल प्राप्त करने के लिए एक पायथन स्क्रिप्ट और इसे यहाँ चुराने के लिए (कोड में आप देख सकते हैं कि अन्य सेवा खातों को कैसे निर्दिष्ट किया जाए)।
अधिक गहन व्याख्या के लिए, देखें https://rhinosecuritylabs.com/gcp/iam-privilege-escalation-gcp-cloudbuild/
cloudbuild.builds.update
संभावित रूप से इस अनुमति के साथ आप एक क्लाउड बिल्ड को अपडेट कर सकते हैं और बस सेवा खाता टोकन चुरा सकते हैं जैसे कि पिछले अनुमति के साथ किया गया था (लेकिन दुर्भाग्यवश इस लेखन के समय मैं उस API को कॉल करने का कोई तरीका नहीं ढूंढ सका)।
TODO
cloudbuild.repositories.accessReadToken
इस अनुमति के साथ उपयोगकर्ता पढ़ने के लिए एक्सेस टोकन प्राप्त कर सकता है जिसका उपयोग रिपॉजिटरी तक पहुँचने के लिए किया जाता है:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{}' \
"https://cloudbuild.googleapis.com/v2/projects/<PROJECT_ID>/locations/<LOCATION>/connections/<CONN_ID>/repositories/<repo-id>:accessReadToken"
cloudbuild.repositories.accessReadWriteToken
इस अनुमति के साथ, उपयोगकर्ता पढ़ने और लिखने की पहुँच टोकन प्राप्त कर सकता है जिसका उपयोग भंडार तक पहुँचने के लिए किया जाता है:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{}' \
"https://cloudbuild.googleapis.com/v2/projects/<PROJECT_ID>/locations/<LOCATION>/connections/<CONN_ID>/repositories/<repo-id>:accessReadWriteToken"
cloudbuild.connections.fetchLinkableRepositories
इस अनुमति के साथ आप उन रिपोजिटरीज़ को प्राप्त कर सकते हैं जिन तक कनेक्शन की पहुँच है:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://cloudbuild.googleapis.com/v2/projects/<PROJECT_ID>/locations/<LOCATION>/connections/<CONN_ID>:fetchLinkableRepositories"
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें, PRs को HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में सबमिट करके।