AWS: 滥用IAM 策略版本

blackhat

版主

blackhat Rep
0
0
0
Rep
0
blackhat Vouches
Vouches
0
8 MONTHS
8 8 MONTHS OF SERVICE
blackhat 获得
0
0
0
获得
0
blackhat 凭证
0
0
0
凭证
0
主题
15
点赞
0
HakB
8
在社区成长 8 月
LEVEL 90 100 XP
 
本文探讨了AWS IAM 中的一个特定问题——策略版本控制。如果配置不正确,则可以通过将默认策略回滚到更早、更宽松的版本来利用它。这允许用户获得比预期更高的权限,凸显了仔细的策略版本管理的必要性。

目录​

关于IAM 策略版本控制实验室设置和先决条件部分1: IAM 实验室设置创建许可Vuln_policy_version 1
创建受限Vuln_policy_version 4
第2: 部分枚举和利用渗透测试的先决条件
使用IAM 用户凭证的AWS CLI 设置策略枚举
IAM 策略版本控制利用
AnalysisRecommendations 结论

关于 IAM 策略版本控制​

更新客户管理或AWS 管理的策略时,IAM 会创建新版本而不是替换现有版本。客户管理的策略最多支持五个版本。相比之下,内联策略直接附加到单个用户、组或角色,无法重用,并且不支持版本控制。要设置策略的默认版本,与AWS API 操作相对应的所需权限是CreatePolicyVersion 或SetDefaultPolicyVersion。您可以使用其中之一
iam:CreatePolicyVersion 操作允许创建新版本并将其设置为默认版本。
iam:SetDefaultPolicyVersion 操作允许将任何现有版本设置为默认版本。
授予这些权限使用户能够更改处于活动状态的策略版本。

实验室设置和先决条件​

AWS 账户
虚拟机卡利Linux
如果您是AWS 平台的新手,建议您在此处完成AWS 实验室设置,

第 1 部分:IAM 实验室设置​

以下是设置环境的说明。我们将访问AWS 控制台并配置AWS 命令行界面(CLI)。
用户:Igt_sanjeet
策略名称:Vuln_policy_version

创建许可 Vuln_policy_version 1:​

要设置客户托管策略的默认版本首先,导航到IAM 策略创建策略。指定策略编辑器的权限。
编写授予完全管理权限的自定义策略,稍后将其用作升级路径。效果: 允许- 授予权限,而不是拒绝。
Action:“*”- 允许跨所有AWS 服务执行所有操作。
Resource:“*”- 适用于帐户中的所有资源。
{
'版本': '2012-10-17',
‘声明’: [
{
'效果': '允许',
'行动': '*',
“资源”:“*”
}
]
}
这是策略在策略编辑器上的样子
AWS IAM Policy Version Privilege Escalation

在查看和创建时,添加策略详细信息,例如策略名称Vuln_policy_version 和说明,如下所示
3.png

然后,返回IAM 下的策略并搜索创建的策略,它应该出现在策略名称下。
AWS IAM Policy Version Privilege Escalation

首先,单击策略名称Vuln_policy_version 查看其完整详细信息。在策略版本下,可以看到默认版本1。按编辑
5.png

Vuln_policy_version 中的“修改权限”下将再次弹出策略编辑器。编写授予受限权限的自定义策略。
iam:ListPolicyVersions – 列出指定IAM 策略的所有版本。
iam:SetDefaultPolicyVersion – 将特定策略版本设置为默认版本。
iam:ListAttachedUserPolicies – 列出附加到指定IAM 用户的托管策略。
iam:ListPolicies – 列出您的AWS 账户中的所有IAM 托管策略。
iam:GetPolicyVersion – 检索有关IAM 策略特定版本的详细信息。
{
'版本': '2012-10-17',
‘声明’: [
{
'效果': '允许',
'行动': [
'iam:ListPolicyVersions',
'iam:SetDefaultPolicyVersion',
'iam:ListAttachedUserPolicies',
'iam:ListPolicies',
“iam:获取策略版本”
],
“资源”:“*”
}
]
}
这就是策略在策略编辑器中的显示方式。
AWS IAM Policy Version Privilege Escalation

然后,转到策略,选择Vuln_policy_version,然后打开策略版本选项卡。检查版本v4 并单击设置为默认值。
这里清楚地写着,每当策略更新时,都会创建一个新版本,并且客户最多可以保存5 个版本的客户管理策略。
Note:您可以删除除默认版本之外的任何托管策略版本。版本标识符(例如,v1、v2)保持不变,因此它们可能不按顺序排列。
7.png

转到IAM 用户创建用户。输入用户详细信息,然后直接在“设置权限”下选择“附加策略”。从列表中选择Vuln_policy_version,然后单击下一步。
AWS IAM Policy Version Privilege Escalation

最后,转到IAM 用户。选择Igt_sanjeet 并单击创建访问密钥。现在下载包含访问密钥ID 和秘密访问密钥的.csv 文件。确保这些凭据的安全。
9.png

第 2 部分:枚举和利用​

管理不善的策略版本的安全影响在现实场景中,管理不善的策略版本会允许过时的权限持续存在,从而增加安全风险,从而可能导致数据泄露和合规性违规。变更控制不足使得跟踪变更和执行当前的安全策略变得困难。
Note:要防止用户更改策略的默认版本,您必须同时拒绝iam:CreatePolicyVersion和diam:SetDefaultPolicyVersion。 AWS IAM 最佳实践
渗透测试机: Kali Linux
测试凭证: Igt_sanjeet 用户的访问密钥+ 秘密+ 区域
Tools: AWS-Cli (sudo apt install awscli)

使用 IAM 用户凭证的 AWS CLI 设置策略枚举​

使用Igt_sanjeet 凭证配置AWS CLI 配置文件。它提示输入AWS访问密钥ID、AWS秘密访问密钥、默认区域。
aws 配置--profile Igt_sanjeet
然后,立即运行: 命令确认用户Igt_sanjeet 已附加Vuln_policy_version 策略。请注意屏幕截图中突出显示的PolicyArn。
aws iam list-attached-user-policies --用户名Igt_sanjeet --profile Igt_sanjeet
AWS IAM Policy Version Privilege Escalation

然后,通过以下命令获取Vuln_policy_version的所有版本,结果清楚地显示版本Id v1和v4
 
顶部