GCP - Cloudbuild Privesc

Support HackTricks

cloudbuild

Cloud Build के बारे में अधिक जानकारी के लिए देखें:

GCP - Cloud Build Enum

cloudbuild.builds.create

इस अनुमति के साथ आप एक क्लाउड बिल्ड सबमिट कर सकते हैं। cloudbuild मशीन में डिफ़ॉल्ट रूप से cloudbuild सेवा खाते का एक टोकन होगा: <PROJECT_NUMBER>@cloudbuild.gserviceaccount.com। हालाँकि, आप cloudbuild कॉन्फ़िगरेशन में परियोजना के भीतर किसी भी सेवा खाते को संकेतित कर सकते हैं। इसलिए, आप बस मशीन को अपने सर्वर पर टोकन को एक्सफिल्ट्रेट करने के लिए बना सकते हैं या इसके अंदर एक रिवर्स शेल प्राप्त कर सकते हैं और खुद को टोकन प्राप्त कर सकते हैं (टोकन वाला फ़ाइल बदल सकता है)।

आप मूल एक्सप्लॉइट स्क्रिप्ट यहाँ GitHub पर पा सकते हैं (लेकिन जिस स्थान से यह टोकन ले रहा है वह मेरे लिए काम नहीं किया)। इसलिए, यहाँ एक स्क्रिप्ट देखें जो एक कमजोर वातावरण के निर्माण, शोषण और सफाई को स्वचालित करती है और क्लाउडबिल्ड मशीन के अंदर एक रिवर्स शेल प्राप्त करने के लिए एक पायथन स्क्रिप्ट और यहाँ इसे चुराने के लिए (कोड में आप देख सकते हैं कि अन्य सेवा खातों को कैसे निर्दिष्ट किया जाए)

अधिक गहन व्याख्या के लिए, 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"
HackTricks का समर्थन करें

Last updated