8
月
在社区成长 8 月
LEVEL 90
100 XP
随着越来越多的组织依赖云服务,了解云环境的复杂性和可能导致资源和帐户泄露的错误配置变得至关重要。本指南将涵盖AWS 环境中最严重的安全威胁,即通过角色假设进行的权限升级,在这种情况下,具有有限IAM 权限的用户可以使用错误配置的IAM 角色获得对资源的更高访问权限。
配置高特权IAM 角色
设置S3 存储桶
第2: 部分IAM 枚举和利用用户如何获得对高权限IAM 角色的访问权限
使用Enumerate-iam Python 脚本枚举IAM 角色
使用AWS CLI 枚举IAM 角色
IAM AssumeRole 权限提升
AnalysisRecommendationConclusion
具有长期凭证的IAM User: 委托人
通过访问密钥ID 和秘密访问密钥进行编程访问
通过用户名和密码访问Web 控制台
IAM Role: 可由其他人承担的委托人
IAM Policy: 可以分配给委托人或组的权限
这通常在同一帐户内或跨帐户(跨帐户访问)使用。 AssumeRole 操作是AWS Identity and Access Management (IAM) 中的一个API 操作,使这成为可能。
角色假设有助于遵循最小权限原则,允许用户仅具有所需权限的角色切换,而无需管理多组永久凭据。
角色承担的关键组成部分:信任策略– 定义允许谁承担该角色。
权限策略– 定义角色可以执行哪些操作。
临时凭证– 在担任角色时由AWS STS 颁发。
AWS Security Token Service (STS) 是一项向需要在有限时间内访问AWS 资源的用户或角色颁发临时安全凭证(访问密钥、秘密密钥和会话令牌)的服务。
虚拟机卡利Linux
如果您是AWS 平台的新手,建议您在此处完成AWS 实验室设置,
然后,在左侧导航菜单中,单击“访问管理”部分下的“用户”链接。
然后,在“用户”页面上,按“创建用户”以创建新用户。
为用户提供一个用户名(例如lgt_lowpriv),然后按“下一步”。
配置lgt_lowpriv用户的权限。在“设置权限”页面上,从“权限”选项中选择直接附加策略。
在权限策略下,选择策略名称AmazonEC2FullAccess。策略名称必须与此完全匹配
AmazonEC2FullAccess – 此策略将允许用户拥有EC2 的完全访问权限并对其进行管理(例如EC2 上的读写操作)。
然后,附加另一个策略AmazonS3ReadOnlyAccess – 它允许我们的用户查看S3 存储桶及其内容,但明确阻止他们进行更改或删除任何内容。
IAMReadOnlyAccess – 此权限将使我们的用户能够检查IAM 配置,这通常是发现潜在漏洞的关键步骤。
最后,单击“下一步”,然后单击“创建用户”。
完成后,单击新创建的用户并查看其详细信息。
选择“创建访问密钥”。这些访问密钥(访问密钥ID 和秘密访问密钥)对于使用AWS 命令行界面(CLI) 等工具以编程方式与AWS 进行交互至关重要。
然后,选择“命令行界面(CLI)”作为用例。
单击“创建访问密钥”。
现在下载包含访问密钥ID 和秘密访问密钥的.csv 文件。确保这些凭证的安全。
步骤1: 导航到IAM 角色返回IAM 仪表板,单击“访问管理”下的“角色”,然后单击“创建角色”。
您可以在此处管理其他实体可以临时穿着的“制服”。
目录
AWS IAM 关键术语简介关于AssumeRoleLab 设置和先决条件部分1: 易受攻击的IAM 实验室设置配置低特权IAM 用户配置高特权IAM 角色
设置S3 存储桶
第2: 部分IAM 枚举和利用用户如何获得对高权限IAM 角色的访问权限
使用Enumerate-iam Python 脚本枚举IAM 角色
使用AWS CLI 枚举IAM 角色
IAM AssumeRole 权限提升
AnalysisRecommendationConclusion
AWS IAM 简介
AWS Identity and Access Management (IAM) 是一项Web 服务,可帮助您安全地控制对AWS 资源的访问。具体来说,通过IAM,您可以管理控制用户可以访问哪些AWS 资源的权限。换句话说,您使用IAM 来控制谁经过身份验证(登录)和授权(拥有权限)来使用资源。此外,IAM 还提供控制AWS 账户身份验证和授权所需的基础设施。IAM 关键术语
委托人: IAM 身份的总称具有长期凭证的IAM User: 委托人
通过访问密钥ID 和秘密访问密钥进行编程访问
通过用户名和密码访问Web 控制台
IAM Role: 可由其他人承担的委托人
IAM Policy: 可以分配给委托人或组的权限
关于 AssumeRole
角色代入是指临时承担IAM 角色权限的行为。当用户(或其他角色/服务)担任角色时,AWS 会向他们提供临时安全凭证,其中包含访问密钥ID、秘密访问密钥和会话令牌。这些凭证允许他们执行由他们所承担的角色定义的操作。这通常在同一帐户内或跨帐户(跨帐户访问)使用。 AssumeRole 操作是AWS Identity and Access Management (IAM) 中的一个API 操作,使这成为可能。
角色假设有助于遵循最小权限原则,允许用户仅具有所需权限的角色切换,而无需管理多组永久凭据。
角色承担的关键组成部分:信任策略– 定义允许谁承担该角色。
权限策略– 定义角色可以执行哪些操作。
临时凭证– 在担任角色时由AWS STS 颁发。
AWS Security Token Service (STS) 是一项向需要在有限时间内访问AWS 资源的用户或角色颁发临时安全凭证(访问密钥、秘密密钥和会话令牌)的服务。
实验室设置和先决条件:
AWS 账户虚拟机卡利Linux
如果您是AWS 平台的新手,建议您在此处完成AWS 实验室设置,
第 1 部分:存在漏洞的 IAM 实验室设置
以下是设置环境的说明。我们将访问AWS Web 控制台并配置命令行界面(CLI),同时创建受限访问IAM 用户、高特权IAM 角色并设置s3 存储桶。配置低权限 IAM 用户
首先,在AWS 服务搜索框中,键入“IAM”并选择结果中显示的IAM 服务。
然后,在左侧导航菜单中,单击“访问管理”部分下的“用户”链接。
然后,在“用户”页面上,按“创建用户”以创建新用户。
为用户提供一个用户名(例如lgt_lowpriv),然后按“下一步”。
配置lgt_lowpriv用户的权限。在“设置权限”页面上,从“权限”选项中选择直接附加策略。
在权限策略下,选择策略名称AmazonEC2FullAccess。策略名称必须与此完全匹配
AmazonEC2FullAccess – 此策略将允许用户拥有EC2 的完全访问权限并对其进行管理(例如EC2 上的读写操作)。
然后,附加另一个策略AmazonS3ReadOnlyAccess – 它允许我们的用户查看S3 存储桶及其内容,但明确阻止他们进行更改或删除任何内容。
“此限制将成为我们权限升级演示的关键部分”。
IAMReadOnlyAccess – 此权限将使我们的用户能够检查IAM 配置,这通常是发现潜在漏洞的关键步骤。
最后,单击“下一步”,然后单击“创建用户”。
完成后,单击新创建的用户并查看其详细信息。
选择“创建访问密钥”。这些访问密钥(访问密钥ID 和秘密访问密钥)对于使用AWS 命令行界面(CLI) 等工具以编程方式与AWS 进行交互至关重要。
然后,选择“命令行界面(CLI)”作为用例。
单击“创建访问密钥”。
现在下载包含访问密钥ID 和秘密访问密钥的.csv 文件。确保这些凭证的安全。
配置高特权 IAM 角色
然后,我们将创建一个强大的IAM 角色。此角色体现了我们的lgt_lowpriv 用户在演示期间将暂时获得的提升权限。步骤1: 导航到IAM 角色返回IAM 仪表板,单击“访问管理”下的“角色”,然后单击“创建角色”。
您可以在此处管理其他实体可以临时穿着的“制服”。