从GCP云函数窃取访问令牌的渗透测试实践

从GCP云函数窃取访问令牌

在身份和访问管理(IAM)中,策略是一组定义访问控制的规则,通过指定谁可以对哪些资源执行什么操作来管理权限。这些策略帮助管理员在环境中有效管理权限。

在Google云平台(GCP)中,策略通常包含三个主要组成部分:

  • 成员:通常是用户、服务账户和群组
  • 角色/权限:定义成员可以对特定资源执行的操作
  • 资源:策略应用的实际资产,如项目、云函数、存储桶、计算实例等

任何允许意外访问的IAM策略错误配置都可能导致安全风险。

理解云函数

GCP中的云函数类似于AWS Lambda,是由事件驱动动作触发的代码块。这些无服务器函数允许开发人员自动化处理过程,如图像调整大小、将文件上传到存储桶或在数据库记录修改时发送通知。

我们可以通过不同方式触发云函数:直接使用gcloud functions call命令调用、使用Google云控制台,或向函数URL发送GET或POST请求。

要调用云函数,用户或服务账户必须在项目级别或云函数本身的IAM策略中被分配适当的IAM角色或权限。

角色和权限

角色:

  • 云函数管理员:roles/cloudfunctions.admin
  • 部署/更新云函数:roles/cloudfunctions.developer
  • 调用云函数:roles/cloudfunctions.invoker

权限:

  • 调用云函数:cloudfunctions.functions.invoke
  • 更新云函数代码:cloudfunctions.functions.update
  • 创建新云函数:cloudfunctions.functions.create

更新云函数的IAM策略变更

过去,任何被分配cloudfunctions.admin或cloudfunctions.developer角色的用户或服务账户都能直接对函数进行更改。但现在只有服务账户可以更新函数。

要更新函数:

  • 服务账户必须具有cloudfunctions.developer或cloudfunctions.admin角色
  • 如果用户想要更新函数,需要iam.serviceAccountUser角色或iam.serviceAccounts.actAs权限

所需工具

对于本实验,需要在测试机器上安装gcloud CLI。可以从Google Cloud直接安装,或设置RedCloud-OS(由CWL组装的VMware机器),预装了云渗透测试评估所需的所有工具。

利用步骤

1. 使用服务账户进行身份验证

首先使用gcloud auth命令进行身份验证,并提供服务账户JSON文件:

gcloud auth activate-service-account --key-file [JSON密钥文件]

2. 枚举IAM策略

访问环境后,使用gcloud projects get-iam-policy命令开始枚举过程:

gcloud projects get-iam-policy [项目名称]

可以过滤特定账户检查分配的权限:

gcloud projects get-iam-policy [项目名称] --flatten="bindings[].members" --filter="bindings.members=serviceaccount:服务账户" --format="value(bindings.role)"

3. 检查自定义角色的权限

使用gcloud iam roles describe命令检查自定义角色的权限:

gcloud iam roles describe toub2726 --project [项目名称]

4. 列出可用函数

使用gcloud functions list命令列出可用函数:

gcloud functions list

5. 查看函数详情

使用describe命令获取每个函数的详细信息:

gcloud functions describe [函数名称]

6. 检查每个函数的IAM策略

使用gcloud get-iam-policy命令检查每个可访问函数的IAM策略:

gcloud functions get-iam-policy [函数名称]

7. 调用函数

向函数元数据中的URL发送POST请求来触发函数:

curl -X POST "https://函数URL" -H "Content-Type: application/json" -d '{}'

访问令牌有效期为1小时。

8. 验证访问令牌

通过访问以下URL验证令牌有效性:

https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=[访问令牌]

缓解策略

  • 重新配置IAM策略,移除allUsers和allAuthenticatedUsers调用函数的权限
  • 审查函数代码,确保访问令牌不会被记录、打印或以任何方式暴露
  • 如果需要访问令牌,使用密钥管理器安全存储和检索

参考文献

  • Google Cloud红队专家[CGRTS]
  • IAM基本和预定义角色参考
  • HackTricks Cloud - GCP渗透测试
    更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
    公众号二维码
posted @ 2025-09-25 06:04  qife  阅读(13)  评论(0)    收藏  举报