GCP - Compute Post Exploitation
Compute
有关 Compute 和 VPC(网络)的更多信息,请查看:
GCP - Compute Enum导出和本地检查镜像
这将允许攻击者访问已存在镜像中的数据或创建运行中的 VM 的新镜像,并在不访问运行中的 VM 的情况下访问其数据。
可以将 VM 镜像导出到一个 bucket,然后下载并使用以下命令在本地挂载:
在执行此操作之前,攻击者可能需要对存储桶的权限,并且需要对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
本地导出和检查快照和磁盘
无法直接导出快照和磁盘,但可以将快照转换为磁盘,将磁盘转换为镜像,并按照前一节,导出该镜像以在本地检查
通过创建 VM 检查镜像
为了访问存储在镜像中的数据或运行中的 VM 内部的数据,攻击者可以创建一个镜像,并授予外部账户对该镜像的访问权限:
然后从中创建一个新的 VM:
如果你无法通过镜像给你的外部账户访问权限,你可以在受害者的项目中使用该镜像启动一个VM,并让元数据执行反向shell来访问镜像,添加参数:
Inspect a Snapshot/Disk attaching it to a VM
为了访问存储在磁盘或快照中的数据,你可以将快照转换为磁盘,将磁盘转换为镜像,然后按照前面的步骤进行操作。
或者你可以授予外部账户访问权限(如果起点是快照,则授予快照访问权限或从中创建磁盘):
将磁盘附加到一个实例:
将磁盘挂载到虚拟机内:
SSH进入虚拟机:
识别磁盘:进入虚拟机后,通过列出磁盘设备来识别新磁盘。通常可以找到类似
/dev/sdb
、/dev/sdc
等设备。格式化并挂载磁盘(如果是新磁盘或原始磁盘):
创建挂载点:
挂载磁盘:
如果无法给外部项目访问快照或磁盘的权限,你可能需要在与快照/磁盘相同项目的实例内执行这些操作。
Last updated