原文地址:https://hackingthe.cloud/aws/exploitation/iam_privilege_escalation/
codestar:CreateProject, codestar:AssociateTeamMember
通过访问codestar:CreateProject和codestar:AssociateTeamMember权限,攻击者可以创建新的CodeStar项目并将自己关联为项目的所有者。
这将向用户添加一个新策略,该策略提供对 AWS 服务的许多访问权限。这有利于进一步枚举,因为它可以访问 lambda:List*、iam:ListRoles、iam:ListUsers 等。
glue:UpdateDevEndpoint
通过获得glue:UpdateDevEndpoint权限,攻击者可以更新与glue端点关联的现有 SSH 密钥。这将允许攻击者通过 SSH 进入主机并获得与glue端点的角色相关联的 IAM 凭证的访问权限。虽然不是必需的,但如果无法通过其他方式识别现有端点,那么拥有glue:GetDevEndpoint权限也可能会有所帮助。
iam:AddUserToGroup
通过访问iam:AddUserToGroup权限,攻击者可以将他们控制的 IAM 用户添加到具有更多权限的现有组中。尽管这不是必需的,但在 IAM 系列中拥有其他权限以识别其他组及其权限可能会有所帮助。
iam:AttachGroupPolicy
通过访问iam:AttachGroupPolicy权限,攻击者可以将 IAM 策略添加到他们所属的组。这可能包括诸如 AdministratorAccess 之类的策略,这将为他们提供对 AWS 账户的管理员访问权限。
iam:AttachUserPolicy
通过访问iam:AttachUserPolicy权限,攻击者可以将 IAM 策略添加到他们有权访问的 IAM 用户。这可能包括诸如 AdministratorAccess 之类的策略,这些策略将为他们提供对 AWS 账户的管理员访问权限。
iam:CreateAccessKey
通过访问iam:CreateAccessKey权限,攻击者可以为其他用户创建 IAM 访问密钥和秘密访问密钥。这将允许他们为更多特权用户创建凭据并访问他们的特权。
iam:CreateLoginProfile
通过访问iam:CreateLoginProfile权限,攻击者可以为更有特权的 IAM 用户创建密码以登录控制台。注意:如果已设置密码,则必须改用iam:UpdateLoginProfile。
iam: PassRole, cloudformation:CreateStack
通过访问iam: PassRole和cloudformation:CreateStack权限,攻击者可以创建新的 CloudFormation 堆栈并向其传递更多特权角色。这将允许攻击者将特权升级到具有更高特权的角色。
iam: PassRole, datapipeline:ActivatePipeline, datapipeline:CreatePipeline, datapipeline: PutPipelineDefinition
通过访问iam: PassRole、 datapipeline :ActivatePipeline、datapipeline:CreatePipeline和datapipeline😛utPipelineDefinition权限,攻击者可以创建新管道并传递更多特权角色。值得注意的是,要做到这一点,AWS 账户必须已经包含一个可由 DataPipeline 担任的角色,并且该角色必须拥有比攻击者控制的受害人更大的特权(或至少不同的特权)。
iam: PassRole, ec2:RunInstances
通过访问iam: PassRole和ec2:RunInstances权限,攻击者可以创建一个新的 EC2 实例并将一个更具特权的角色传递给它。
这可以通过以下单线来利用:
需要注意的一些事项:实例配置文件必须已经存在,并且(实际上)它必须具有比您有权访问的角色更大的权限。如果您还具有创建角色的能力,则可以利用这一点(尽管您也可以将该角色的信任策略设置为您当时控制的角色)。正在传递的角色必须具有允许 EC2 服务代入该角色的信任策略。您不能将任意角色传递给 EC2 实例。
关于这种攻击的一个常见误解是攻击者必须能够访问现有的 SSH 密钥,或者能够产生 SSM 会话。实际上并非如此,您可以利用用户数据在主机上执行操作。一个常见的例子是让 EC2 实例 curl 元数据服务,检索 IAM 凭证,然后使用 curl 将它们发送到攻击者控制的机器。
另一个(更隐蔽的)示例是在用户数据脚本中一次执行所有 API 操作。这样,您就不会被 IAM 凭证泄露发现(可以绕过)所困扰。
iam: PassRole, glue:CreateDevEndpoint
通过访问iam: PassRole和glue:CreateDevEndpoint权限,攻击者可以创建新的 Glue 开发端点并传递更多特权角色。值得注意的是,要做到这一点,AWS 账户必须已经包含一个可由 Glue 承担的角色,并且该角色必须具有比攻击者控制的受害人更大的特权(或至少不同的特权)。
iam: PutGroupPolicy
通过访问iam: PutGroupPolicy权限,攻击者可以为他们所在的组创建内联策略,并授予自己对 AWS 账户的管理员访问权限。
iam: PutRolePolicy
通过访问iam: PutRolePolicy权限,攻击者可以为他们有权访问的角色创建内联策略,并授予自己对 AWS 账户的管理员访问权限。
iam:SetDefaultPolicyVersion
通过访问iam:SetDefaultPolicyVersion权限,攻击者可以将与其主体关联的策略恢复到以前的版本。这对于策略的先前版本比当前版本具有更多访问权限的情况很有用。
lambda:UpdateFunctionConfiguration
通过访问lambda:UpdateFunctionConfiguration权限,攻击者可以修改现有 Lambda 函数的配置以添加新的 Lambda 层。然后,该层将覆盖现有库,并允许攻击者在与 Lambda 函数关联的角色的权限下执行恶意代码。