利用Azure、AWS和GCP中的配置错误进行渗透测试

本文详细介绍了如何利用Azure、AWS和GCP云平台中的常见配置错误进行攻击,包括侦察枚举、权限提升和横向移动技术,并提供了实际工具和防御措施。

利用Azure、AWS和GCP中的配置错误

云作为主要攻击面

向云基础设施的转型从根本上重塑了对抗格局。企业利用Azure和Google Cloud Platform(GCP)时,常常低估了保护分布式身份、基于角色的访问控制(RBAC)和资源供应模型的复杂性。这引入了配置错误,红队可以利用这些错误来提升权限、窃取敏感数据或实现持久访问。

侦察和枚举

Azure

凭据访问(通过Az CLI):

1
2
3
4
5
6
az login # 使用用户或服务主体进行身份验证
az account list # 枚举订阅
az ad user list # 转储AD用户
az role assignment list # 识别过多权限
az ad sp list --show-mine # 显示可访问的服务主体
az storage account list # 发现blob容器及其访问级别

MicroBurst(PowerShell):

1
2
3
Invoke-EnumerateAzureBlobs -Verbose
Invoke-EnumerateAzureSubDomains -Verbose
Get-AzurePasswords -Verbose

Google Cloud Platform(GCP)

使用gcloud CLI进行枚举:

1
2
3
4
5
gcloud auth login
gcloud projects list
gcloud iam roles list --project=<project-id>
gcloud iam service-accounts list
gcloud projects get-iam-policy <project-id>

CloudFox示例命令:

1
cloudfox gcp -p <project-id> --all

AWS(Amazon Web Services)

通过AWS CLI进行凭据枚举:

1
2
3
4
5
aws sts get-caller-identity
aws iam list-users
aws iam list-roles
aws iam list-policies -scope Local
aws s3 ls

工具: enumerate-iam, Pacu, CloudSploit, ScoutSuite, awscli

GCP、AWS和Azure中的高影响配置错误

配置错误通常由于过度宽松的IAM策略、公共资源的不当暴露以及对内部权限边界的忽视而产生。

Azure配置错误

配置错误、攻击向量和影响:

  • 订阅上的贡献者角色: 允许创建资源,包括Function Apps和Key Vault滥用。
  • 公共存储容器: 允许未经身份验证的访问、数据泄漏或恶意软件托管。
  • 暴露的服务主体凭据: 硬编码或泄漏的密钥被重用,以冒充特权服务。
  • 应用注册令牌泄露: 令牌在日志或存储库中暴露;提升Graph API访问或身份冒充。

工具: MicroBurst, StormSpotter, ADDInternals, Az CLI

GCP配置错误

配置错误、攻击向量和影响:

  • 公共GCS存储桶: 威胁参与者可以列出、下载或覆盖敏感内容。
  • 计算实例上的元数据API暴露: 通过进行凭据收集;实现横向移动。
  • 编辑器/所有者IAM角色: 完全项目接管;过多的默认访问权限。
  • 函数部署权限: 允许攻击者部署带有持久性的后门云函数。

工具: gcloud, CloudFox, GCPBuckeBrute, Pacu

AWS配置错误

配置错误、攻击向量和影响:

  • IAM策略通配符(例如,“Action”:”*”): 授予对服务的无限制访问,实现权限提升。
  • 公共S3存储桶: 导致数据泄漏或存储中的恶意软件托管。
  • 过度特权的Lambda函数: 具有广泛IAM的Lambda可以调用其他服务或修改资源。
  • EC2元数据服务滥用: 对169.254.169.254的无限制访问产生AWS临时凭据,用于权限提升。
  • 配置错误的AssumeRole策略: 通过AWS STS AssumeRole进行跨账户或意外角色提升。

工具: enumerate-iam, CloudSploit, Pacu, ScoutSuite, AWSBucketDump

权限提升和横向移动

Azure提升链示例:

1
2
3
az functionapp create --name evilapp --resource-group rg1 --storage-account mystorage
curl -H Metadata:true "http://localhost:8080/msi/token?resource=https://graph.microsoft.com"
curl -X GET -H "Authorization: Bearer <access_token>" https://graph.microsoft.com/v1.0/users

GCP提升链示例:

1
2
3
gcloud auth activate-service-account --key-file=creds.json
gcloud iam service-accounts impersonate --target-service-account elevated@project.iam.gserviceaccount.com
gcloud functions deploy rcefunc --runtime python39 --trigger-http --entry-point=main

AWS提升链示例:

1
2
3
4
5
# 从EC2实例访问元数据
curl http://169.254.169.254/latest/meta-data/iam/security-credentials/
# 使用收集的凭据通过STS提升权限
aws sts get-caller-identity
aws iam list-attached-user-policies --user-name <extracted-user>

动手实验和模拟

Azure实验室

  • HTB → ReadyCloudGoat Azure
  • Azurite + 本地MSI模拟

GCP实验室

  • Flaws.cloud (GCP)
  • CloudGoat GCP Fork
  • Pacu实验室脚本

AWS实验室

  • CloudGoat AWS
  • Flaws2.cloud
  • Pacu + LocalStack
  • Terraform AWS IAM Playground

蓝队对策

云平台和防御措施

  • Azure: 监控Function App日志;强制执行RBAC和最小应用范围。
  • GCP: 审计IAM绑定;阻止来自暴露服务的元数据访问。
  • AWS: 限制IAM通配符;监控STS使用和EC2元数据日志。

工具: ScoutSuite, Prowler, Security Hub, CloudSploit, AWS Config

最终思考

云安全是权限继承、隐式信任和用户错误的复杂网络。红队必须采用云原生策略,这些策略在身份提供商之间横向移动,滥用角色假设,并在无服务器环境中持久存在。

在2025年,最危险的云利用不是漏洞,而是你忘记存在的配置错误的角色。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计