GCP - Cloudfunctions Privesc
学习和实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE)
学习和实践 GCP 黑客技术:
HackTricks 培训 GCP 红队专家 (GRTE)
cloudfunctions
有关 Cloud Functions 的更多信息:
GCP - Cloud Functions Enumcloudfunctions.functions.create
, cloudfunctions.functions.sourceCodeSet
, iam.serviceAccounts.actAs
cloudfunctions.functions.create
, cloudfunctions.functions.sourceCodeSet
, iam.serviceAccounts.actAs
拥有这些权限的攻击者可以 创建一个带有任意(恶意)代码的新 Cloud Function,并将其分配给一个服务账户。然后,从元数据中泄露服务账户令牌以提升权限。 可能需要一些权限来触发该函数。
此方法的利用脚本可以在 这里 和 这里 找到,预构建的 .zip 文件可以在 这里 找到。
cloudfunctions.functions.update
, cloudfunctions.functions.sourceCodeSet
, iam.serviceAccounts.actAs
cloudfunctions.functions.update
, cloudfunctions.functions.sourceCodeSet
, iam.serviceAccounts.actAs
拥有这些权限的攻击者可以 修改函数的代码,甚至修改附加的服务账户,目的是提取令牌。
为了部署云函数,您还需要对默认计算服务账户或用于构建映像的服务账户具有 actAs 权限。
可能需要一些额外的权限,例如版本 1 cloudfunctions 的 .call
权限或触发该函数的角色 role/run.invoker
。
如果您收到错误 Permission 'run.services.setIamPolicy' denied on resource...
,这意味着您正在使用 --allow-unauthenticated
参数,并且您没有足够的权限。
此方法的利用脚本可以在 这里 找到。
cloudfunctions.functions.sourceCodeSet
cloudfunctions.functions.sourceCodeSet
通过此权限,您可以获取一个 签名的 URL,以便能够将文件上传到函数存储桶(但函数的代码不会被更改,您仍然需要更新它)
从攻击者的角度来看,仅有这个权限的实用性不太确定,但知道这一点是好的。
cloudfunctions.functions.setIamPolicy
, iam.serviceAccounts.actAs
cloudfunctions.functions.setIamPolicy
, iam.serviceAccounts.actAs
给自己任何之前的 .update
或 .create
权限以进行升级。
cloudfunctions.functions.update
cloudfunctions.functions.update
仅拥有 cloudfunctions
权限,而没有 iam.serviceAccounts.actAs
,你 将无法更新函数,因此这不是有效的权限提升。
存储桶写入权限
你可能认为拥有 存储桶的写入权限 的攻击者将能够 修改代码,覆盖 function_code.zip
,然后使函数 执行任意 代码。
然而,这并不正确,仅仅覆盖存储桶中的代码不会修改正在执行的代码。
参考文献
学习与实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE)
学习与实践 GCP 黑客技术:
HackTricks 培训 GCP 红队专家 (GRTE)
Last updated