GCP - Compute Privesc
Compute
有关 GCP 中 Compute 和 VPC(网络)的更多信息,请查看:
GCP - Compute Enum请注意,要执行所有需要修改实例元数据的权限提升攻击(如添加新用户和 SSH 密钥),您需要对附加到实例的服务账户具有 actAs
权限,即使服务账户已经附加!
compute.projects.setCommonInstanceMetadata
compute.projects.setCommonInstanceMetadata
通过该权限,您可以修改一个实例的元数据信息,并更改用户的授权密钥,或创建一个具有 sudo 权限的新用户。因此,您将能够通过 SSH 进入任何 VM 实例并窃取实例正在运行的 GCP 服务账户。 限制:
请注意,默认情况下,在 VM 实例中运行的 GCP 服务账户具有非常有限的范围
您需要能够联系 SSH 服务器以登录
有关如何利用此权限的更多信息,请查看:
GCP - Add Custom SSH Metadata您还可以通过添加新的启动脚本并重启实例来执行此攻击:
compute.instances.setMetadata
compute.instances.setMetadata
此权限赋予与之前权限相同的特权,但仅针对特定实例,而不是整个项目。与前一部分相同的漏洞和限制适用。
compute.instances.setIamPolicy
compute.instances.setIamPolicy
这种权限将允许您授予自己具有之前权限的角色并利用它们提升特权。
compute.instances.osLogin
compute.instances.osLogin
如果实例中启用了OSLogin,则使用此权限您可以直接运行**gcloud compute ssh [INSTANCE]
并连接到实例。您在实例内没有root权限**。
为了成功使用此权限登录到VM实例,您需要对附加到VM的SA拥有iam.serviceAccounts.actAs
权限。
compute.instances.osAdminLogin
compute.instances.osAdminLogin
如果实例中启用了OSLogin,则使用此权限您可以直接运行**gcloud compute ssh [INSTANCE]
并连接到实例。您将在实例内拥有root权限**。
为了成功使用此权限登录到VM实例,您需要对附加到VM的SA拥有iam.serviceAccounts.actAs
权限。
compute.instances.create
,iam.serviceAccounts.actAs, compute.disks.create
, compute.instances.create
, compute.instances.setMetadata
, compute.instances.setServiceAccount
, compute.subnetworks.use
, compute.subnetworks.useExternalIp
compute.instances.create
,iam.serviceAccounts.actAs, compute.disks.create
, compute.instances.create
, compute.instances.setMetadata
, compute.instances.setServiceAccount
, compute.subnetworks.use
, compute.subnetworks.useExternalIp
可以创建一个分配了服务账户的虚拟机并窃取该服务账户的令牌,通过访问元数据来提升特权。
此方法的利用脚本可以在这里找到。
osconfig.patchDeployments.create
| osconfig.patchJobs.exec
osconfig.patchDeployments.create
| osconfig.patchJobs.exec
如果您拥有**osconfig.patchDeployments.create
或osconfig.patchJobs.exec
**权限,您可以创建一个补丁作业或部署。这将使您能够在环境中横向移动,并在项目内的所有计算实例上获得代码执行权限。
请注意,目前您不需要对附加到实例的SA拥有actAs
权限。
如果您想手动利用此漏洞,您需要创建一个补丁作业 或 部署。 要运行补丁作业:
要部署补丁部署:
该工具 patchy 过去可以用于利用此错误配置(但现在无法使用)。
攻击者也可以利用此进行持久化。
compute.machineImages.setIamPolicy
compute.machineImages.setIamPolicy
授予自己额外权限 以访问计算镜像。
compute.snapshots.setIamPolicy
compute.snapshots.setIamPolicy
授予自己额外权限 以访问磁盘快照。
compute.disks.setIamPolicy
compute.disks.setIamPolicy
授予自己额外权限 以访问磁盘。
绕过访问范围
通过此链接,您可以找到一些 尝试绕过访问范围的想法。
GCP 计算实例中的本地权限提升
GCP - local privilege escalation ssh pivoting参考文献
Last updated