GCP - Privilege Escalation

学习并练习AWS黑客技术:HackTricks培训AWS红队专家(ARTE) 学习并练习GCP黑客技术:HackTricks培训GCP红队专家(GRTE)

支持HackTricks

GCP提权简介

GCP,像任何其他云一样,有一些主体:用户、组和服务帐户,以及一些资源,如计算引擎、云函数... 然后,通过角色,为这些主体授予对资源的权限。这是在GCP中指定主体对资源具有的权限的方式。 有一些权限将允许用户在资源或第三方资源上获得更多权限,这就是所谓的提权(也就是利用漏洞获得更多权限)。

因此,我想将GCP提权技术分为2组

  • 提升为主体:这将允许您冒充另一个主体,因此可以像该主体一样行事,拥有他的所有权限。例如:滥用_getAccessToken_来冒充服务帐户。

  • 资源上的提权:这将允许您获得对特定资源的更多权限。例如:您可以滥用_cloudfunctions_上的_setIamPolicy_权限,以允许您触发该函数。

  • 请注意,一些资源权限还将允许您将任意服务帐户附加到资源上。这意味着您将能够使用SA启动资源,进入资源,并窃取SA令牌。因此,这将允许通过资源提升提升为主体。这在以前的几个资源中发生过,但现在发生的频率较低(但仍可能发生)。

显然,最有趣的提权技术是第二组的技术,因为它将允许您获得更多特权,超出您已经拥有某些资源权限的范围。但是,请注意,在资源中提升也可能让您访问敏感信息,甚至访问其他主体(也许通过读取包含SA令牌的秘密)。

还要注意,在GCP服务帐户既是主体又是权限,因此在SA中提升权限也将允许您冒充它。

括号中的权限指示使用gcloud来利用漏洞所需的权限。如果通过API利用漏洞,则可能不需要这些权限。

提权方法论的权限

这是我测试特定权限以执行GCP内部特定操作的方法。

  1. 在tests/中添加新脚本

绕过访问范围

从GCP元数据服务泄漏的SA令牌具有访问范围。这些是对令牌具有的权限限制。例如,如果令牌具有**https://www.googleapis.com/auth/cloud-platform范围,它将对所有GCP服务具有完全访问权限**。但是,如果令牌具有**https://www.googleapis.com/auth/cloud-platform.read-only范围,即使SA在IAM中具有更多权限,它也只能对所有GCP服务进行只读访问**。

没有直接的方法来绕过这些权限,但您可以尝试在受损主机中搜索新凭据,找到服务密钥以生成没有限制的OAuth令牌,或者跳转到权限较低的不同VM

当使用访问范围时,为计算实例(VM)生成的OAuth令牌将包含范围限制。但是,您可能能够绕过此限制并利用受损帐户具有的权限。

绕过此限制的最佳方法是在受损主机中查找新凭据,找到服务密钥以生成没有限制的OAuth令牌,或者攻击权限较低的不同VM

使用以下命令检查具有生成密钥的SA:

for i in $(gcloud iam service-accounts list --format="table[no-heading](email)"); do
echo "Looking for keys for $i:"
gcloud iam service-accounts keys list --iam-account $i
done

提权技术

在AWS中提升权限的方法是拥有足够的权限,以便能够以某种方式访问其他服务账户/用户/组的权限。通过串联提权直到获得组织的管理员访问权限。

GCP有数百(如果不是数千)个权限可以授予实体。在本书中,您可以找到我所知道的所有可以滥用以提升权限权限,但如果您知道这里没有提到的某些路径请分享

本节的子页面按服务排序。您可以在每个服务中找到不同的提权方式。

滥用GCP以在本地提升权限

如果您在GCP中的一台机器内,您可能能够滥用权限以在本地提升权限:

GCP - local privilege escalation ssh pivoting

参考资料

学习并练习AWS黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习并练习GCP黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)

支持 HackTricks

Last updated