AWS - Cognito Unauthenticated Enum
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Cognito es un servicio de AWS que permite a los desarrolladores otorgar a los usuarios de su aplicación acceso a los servicios de AWS. Los desarrolladores otorgarán roles de IAM a los usuarios autenticados en su aplicación (potencialmente las personas podrán simplemente registrarse) y también pueden otorgar un rol de IAM a los usuarios no autenticados.
Para información básica sobre Cognito, consulta:
Los Identity Pools pueden otorgar roles de IAM a usuarios no autenticados que solo conocen el Identity Pool ID (lo cual es bastante común encontrar), y un atacante con esta información podría intentar acceder a ese rol de IAM y explotarlo. Además, los roles de IAM también podrían ser asignados a usuarios autenticados que acceden al Identity Pool. Si un atacante puede registrar un usuario o ya tiene acceso al proveedor de identidad utilizado en el identity pool, podría acceder al rol de IAM otorgado a los usuarios autenticados y abusar de sus privilegios.
Por defecto, Cognito permite registrar nuevos usuarios. Poder registrar un usuario podría darte acceso a la aplicación subyacente o al rol de acceso IAM autenticado de un Identity Pool que está aceptando como proveedor de identidad el Cognito User Pool. Consulta cómo hacerlo aquí.
Pacu, el marco de explotación de AWS, ahora incluye los módulos "cognito__enum" y "cognito__attack" que automatizan la enumeración de todos los activos de Cognito en una cuenta y marcan configuraciones débiles, atributos de usuario utilizados para el control de acceso, etc., y también automatizan la creación de usuarios (incluido el soporte de MFA) y la escalada de privilegios basada en atributos personalizados modificables, credenciales de pool de identidad utilizables, roles asumibles en tokens de id, etc.
Para una descripción de las funciones de los módulos, consulta la parte 2 del blog post. Para instrucciones de instalación, consulta la página principal de Pacu.
Ejemplo de uso de cognito__attack
para intentar la creación de usuarios y todos los vectores de privesc contra un pool de identidad y cliente de pool de usuarios dados:
Ejemplo de uso de cognito__enum para recopilar todos los grupos de usuarios, clientes de grupos de usuarios, grupos de identidades, usuarios, etc. visibles en la cuenta de AWS actual:
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)