IAM 错误配置
权限过度开放的角色
IAM 错误配置 是 CoddyKit 上的免费 Ethical Hacking Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Ethical Hacking Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Ethical Hacking Academy 课程共包含 4 节课。
为什么 IAM 才是真正的边界
在云环境中,身份就是新的边界。IAM(身份与访问管理)决定谁可以执行什么操作。IAM 中的缺陷可能让攻击者从低权限立足点提升到对整个账户的控制。
- 用户、角色和服务账户都是身份
- 策略定义权限
- 配置错误的策略是云环境中最主要的风险
大多数云权限提升问题都源于 IAM。
用户、角色与策略
AWS IAM 有三个您必须理解的基本组成部分:
- 用户 — 持有访问密钥的长期身份
- 角色 — 可由用户或服务代入的临时身份
- 策略 — 授予或拒绝对资源执行操作的 JSON 文档
策略附加得过于宽泛,就会产生权限过度授予的问题。
{
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::reports-bucket/*"
}通配符的危险
最危险的 IAM 模式是通配符策略。它会授予对所有资源执行所有操作的权限。
如果攻击者入侵了拥有此策略的身份,就等于控制了整个账户。
{
"Effect": "Allow",
"Action": "*",
"Resource": "*"
}
# Action:* Resource:* = full administrative control.
# Flag this everywhere it appears outside a break-glass admin role.枚举您自身的权限
一旦持有凭证,就应列出它可以执行的操作。IAM 提供了可揭示附加策略的读取 API。
有些账户甚至会向普通用户授予 iam:Get* 和 iam:List*,相当于免费提供了一份权限地图。
# List policies attached to a user
aws iam list-attached-user-policies --user-name devuser
# Get the JSON of a managed policy version
aws iam get-policy-version \
--policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess \
--version-id v1通过 iam:PassRole 提升权限
一种经典的权限提升方式是:用户拥有 iam:PassRole 和创建服务的权限。这样,他们就可以启动一个能够代入高权限角色的资源,并继承该角色的访问权限。
- 用户拥有
ec2:RunInstances+iam:PassRole - 他们启动一个附加了管理员角色的 EC2 实例
- 该实例现在持有管理员凭证,而他们可以将其取出
用户从未直接拥有管理员权限,却通过这种方式提升了权限。
危险的权限组合
单个权限可能没有危害,但组合起来就可能形成权限提升路径。已知的高风险组合包括:
iam:CreatePolicyVersion— 重写现有策略以授予管理员权限iam:AttachUserPolicy— 将 AdministratorAccess 附加给自己- 对其他用户使用
iam:CreateAccessKey— 窃取其身份 - 对信任范围过宽的角色使用
sts:AssumeRole
工具可以自动枚举这些组合。
信任策略与 AssumeRole
角色拥有用于定义谁可以代入该角色的信任策略。范围过宽的信任策略就是一个后门。
如果某个角色错误地信任整个账户,甚至信任外部账户,攻击者就可以代入该角色。
{
"Effect": "Allow",
"Principal": { "AWS": "arn:aws:iam::123456789012:root" },
"Action": "sts:AssumeRole"
}
# Trusting the entire account root means ANY identity in it can assume the role.自动发现权限提升路径
手动检查每种策略组合十分繁琐。工具可以为您绘制权限提升路径。
- Pacu — 带有权限提升模块的 AWS 利用框架
- PMapper — 绘制 IAM 关系图并查找权限提升边
- enumerate-iam — 穷举某个密钥可以调用的 API
# Run Pacu's IAM privilege escalation enumeration
pacu
# > run iam__privesc_scan
# Build an IAM access graph and query it
pmapper graph create
pmapper query 'preset privesc *'内联策略与托管策略
授予权限有两种方式,攻击者会同时检查这两种方式:
- 托管策略 — 可重复使用,并可附加到多个身份
- 内联策略 — 直接嵌入单个用户或角色
内联策略在审计中很容易被遗漏,因此经常隐藏着过多权限。评估身份时,务必同时枚举这两类策略。
# Inline policies are listed separately from attached ones
aws iam list-user-policies --user-name devuser
aws iam get-user-policy --user-name devuser --policy-name custom-inline加固:最小权限
修复 IAM 配置错误的方法是遵循最小权限原则:只授予完成任务所需的确切权限。
- 用明确的操作和资源 ARN 替代通配符
- 使用具有短期凭证的角色,而不是长期密钥
- 使用 Access Analyzer 审计未使用的权限
- 对高权限身份强制启用 MFA
您的报告应将每项发现对应到一项遵循最小权限原则的修复措施。
保持在授权范围内
权限提升测试会主动改变账户状态。请务必谨慎:
- 创建策略、密钥或角色具有侵入性,必须获得书面批准
- 记录每项更改,以便恢复
- 优先采用只读枚举,在利用路径前先证明其存在
通常只需证明权限提升路径存在即可,不一定需要将其完全利用。
快速检查
哪种权限组合是经典的 AWS 权限提升路径?
回顾:IAM 配置错误
您已经了解了为什么 IAM 是云环境真正的边界,以及攻击者如何利用它。
- 通配符
Action:* Resource:*策略会造成灾难性后果 iam:PassRole+ 创建服务的权限可以实现权限提升- 范围过宽的信任策略允许攻击者代入角色
- Pacu 和 PMapper 等工具可以自动发现路径
- 修复措施始终应遵循最小权限原则
接下来我们将学习 S3 和存储暴露问题。
常见问题解答
「IAM 错误配置」课时是免费的吗?
是的 — 「IAM 错误配置」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Ethical Hacking Academy 课程的其余内容,请升级到 CoddyKit PRO。 Ethical Hacking Academy 课程共包含 4 节课。
「IAM 错误配置」这节课中我会学到什么?
权限过度开放的角色 你通过在浏览器中直接运行的动手代码来练习 Ethical Hacking Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Ethical Hacking Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Ethical Hacking Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「IAM 错误配置」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Ethical Hacking Academy 课中编写并运行代码吗?
能。每节 Ethical Hacking Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。