AWS - Cognito Unauthenticated Enum

Tip

Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprende y practica Hacking en Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks

Unauthenticated Cognito

Cognito es un servicio de AWS que permite a los desarrolladores conceder a los usuarios de su app acceso a los servicios de AWS. Los desarrolladores conceden IAM roles a usuarios autenticados en su app (potencialmente cualquiera podría registrarse) y también pueden otorgar un IAM role a usuarios no autenticados.

Para información básica sobre Cognito consulta:

AWS - Cognito Enum

Identity Pool ID

Identity Pools pueden conceder IAM roles a usuarios no autenticados que simplemente conozcan el Identity Pool ID (lo cual es bastante común de encontrar), y un atacante con esta información podría intentar acceder a ese IAM role y explotarlo.
Además, IAM roles también podrían asignarse a usuarios autenticados que acceden al Identity Pool. Si un atacante puede registrar un usuario o ya tiene acceso al proveedor de identidad usado en el identity pool, podría acceder al IAM role otorgado a usuarios autenticados y abusar de sus privilegios.

Mira cómo hacerlo aquí.

User Pool ID

Por defecto Cognito permite registrar nuevos usuarios. Poder registrar un usuario podría darte acceso a la aplicación subyacente o al IAM access role autenticado de un Identity Pool que acepte como proveedor de identidad al Cognito User Pool. Mira cómo hacerlo aquí.

Pacu modules for pentesting and enumeration

Pacu, el framework de explotación de AWS, ahora incluye los módulos “cognito__enum” y “cognito__attack” que automatizan la enumeración de todos los assets de Cognito en una cuenta y marcan configuraciones débiles, atributos de usuario usados para control de acceso, etc., y también automatizan la creación de usuarios (incluyendo soporte MFA) y la escalada de privilegios basada en atributos custom modificables, credenciales de identity pool utilizables, roles asumibles en id tokens, etc.

Para una descripción de las funciones de los módulos, ver la parte 2 del blog post. Para instrucciones de instalación, ver la página principal de Pacu.

Usage

Ejemplo de uso de cognito__attack para intentar la creación de usuarios y todos los vectores de privesc contra un identity pool y user pool client dados:

Pacu (new:test) > run cognito__attack --username randomuser --email XX+sdfs2@gmail.com --identity_pools
us-east-2:a06XXXXX-c9XX-4aXX-9a33-9ceXXXXXXXXX --user_pool_clients
59f6tuhfXXXXXXXXXXXXXXXXXX@us-east-2_0aXXXXXXX

Ejemplo de uso de cognito__enum para recopilar todos los user pools, user pool clients, identity pools, users, etc. visibles en la cuenta AWS actual:

Pacu (new:test) > run cognito__enum

Tip

Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprende y practica Hacking en Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks