AWS - 身份和访问管理 (Identity & Access Management / IAM)
列出 IAM 访问密钥 (Listing IAM access Keys)
列出 IAM 用户和组 (Listing IAM Users and Groups)
获取 IAM 详情 (Get IAM Details)
扮演特定角色 (Assume a Specific Role)
aws sts assume-role --role-arn arn:aws:iam::${accountId}:role/${roleName} --role-session-name ${roleName}
使用 MFA 登录 (Login with MFA)
检索 MFA 设备 ARN:
然后创建会话令牌:
影子管理员 (Shadow Admin)
管理员等效权限 (Admin equivalent permission)
-
AdministratorAccess (管理员访问权限)
-
ec2:AssociateIamInstanceProfile : 将 IAM 实例配置文件附加到 EC2 实例
-
iam:CreateAccessKey : 为另一个 IAM 管理员帐户创建新的访问密钥
-
iam:CreateLoginProfile : 添加新的基于密码的登录配置文件,为实体设置新密码并假冒该实体
-
iam:UpdateLoginProfile : 重置其他 IAM 用户的登录密码。
-
iam:AttachUserPolicy, iam:AttachGroupPolicy 或 iam:AttachRolePolicy : 将现有的管理员策略附加到其当前拥有的任何其他实体
aws iam attach-user-policy –user-name my_username –policy-arn arn:aws:iam::aws:policy/AdministratorAccess aws iam attach-user-policy –user-name my_username –policy-arn arn:aws:iam::aws:policy/AdministratorAccess aws iam attach-role-policy –role-name role_i_can_assume –policy-arn arn:aws:iam::aws:policy/AdministratorAccess -
iam:PutUserPolicy, iam:PutGroupPolicy 或 iam:PutRolePolicy : 添加的内联策略将允许攻击者向先前受侵害的实体授予额外的权限。
-
iam:CreatePolicy : 添加隐蔽的管理员策略
-
iam:AddUserToGroup : 添加到组织的管理员组中。
-
iam:UpdateAssumeRolePolicy + sts:AssumeRole : 更改特权角色的 assumption 权限,然后使用非特权帐户扮演该角色。
-
iam:CreatePolicyVersion & iam:SetDefaultPolicyVersion : 更改客户管理的策略并将非特权实体更改为特权实体。
-
lambda:UpdateFunctionCode : 使攻击者能够访问与附加到该函数的 Lambda 服务角色关联的权限。
-
glue:UpdateDevEndpoint : 使攻击者能够访问与特定 Glue 开发端点关联的角色相关的权限。
-
iam:PassRole + ec2:CreateInstanceProfile/ec2:AddRoleToInstanceProfile : 攻击者可以创建一个新的特权实例配置文件,并将其附加到他所拥有的受损 EC2 实例。
-
iam:PassRole + ec2:RunInstance : 授予攻击者对实例配置文件/角色拥有的权限集的访问权限,这同样可以从没有权限提升到具有 AWS 帐户的完全管理员访问权限。
# 添加 ssh 密钥 $ aws ec2 run-instances –image-id ami-a4dc46db –instance-type t2.micro –iam-instance-profile Name=iam-full-access-ip –key-name my_ssh_key –security-group-ids sg-123456 # 执行反弹 shell $ aws ec2 run-instances –image-id ami-a4dc46db –instance-type t2.micro –iam-instance-profile Name=iam-full-access-ip –user-data file://script/with/reverse/shell.sh -
iam:PassRole + lambda:CreateFunction + lambda:InvokeFunction : 授予用户对帐户中存在的任何 Lambda 服务角色关联的权限的访问权限。
aws lambda create-function –function-name my_function –runtime python3.6 –role arn_of_lambda_role –handler lambda_function.lambda_handler –code file://my/python/code.py aws lambda invoke –function-name my_function output.txtcode.py 示例
-
iam:PassRole + glue:CreateDevEndpoint : 获取与帐户中存在的任何 Glue 服务角色相关联的权限的访问权限。