AWS - Cognito Enumeração Não Autenticada

Reading time: 4 minutes

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks

Cognito Não Autenticado

Cognito é um serviço da AWS que permite aos desenvolvedores conceder aos usuários do aplicativo acesso a serviços da AWS. Os desenvolvedores irão conceder IAM roles a usuários autenticados em seu app (potencialmente pessoas poderão simplesmente se registrar) e também podem conceder um IAM role a usuários não autenticados.

Para informações básicas sobre o Cognito veja:

AWS - Cognito Enum

Identity Pool ID

Identity Pools podem conceder IAM roles a usuários não autenticados que apenas conheçam o Identity Pool ID (o que é bastante comum de encontrar), e um atacante com essa informação poderia tentar acessar esse IAM role e explorá-lo.
Além disso, IAM roles também podem ser atribuídos a usuários autenticados que acessam o Identity Pool. Se um atacante conseguir registrar um usuário ou já tiver acesso ao provedor de identidade usado no identity pool, ele poderia acessar o IAM role concedido a usuários autenticados e abusar de seus privilégios.

Veja como fazer isso aqui.

User Pool ID

Por padrão o Cognito permite registrar novos usuários. Poder registrar um usuário pode lhe dar acesso ao aplicativo subjacente ou ao IAM role de acesso autenticado de um Identity Pool que aceita como provedor de identidade o Cognito User Pool. Veja como fazer isso aqui.

Pacu modules for pentesting and enumeration

Pacu, o framework de exploração AWS, agora inclui os módulos "cognito__enum" e "cognito__attack" que automatizam a enumeração de todos os assets do Cognito em uma conta e sinalizam configurações fracas, atributos de usuário usados para controle de acesso, etc., e também automatizam a criação de usuários (incluindo suporte a MFA) e escalada de privilégios baseada em atributos customizáveis modificáveis, credenciais de identity pool utilizáveis, roles assumíveis em id tokens, etc.

Para uma descrição das funções dos módulos veja a parte 2 do post do blog. Para instruções de instalação veja a página principal do Pacu.

Uso

Exemplo de uso de cognito__attack para tentar criação de usuários e todos os vetores de privesc contra um determinado identity pool e user pool client:

bash
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

Exemplo de uso do cognito__enum para coletar todos os user pools, user pool clients, identity pools, users, etc. visíveis na conta AWS atual:

bash
Pacu (new:test) > run cognito__enum

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks