AWS - Cognito Enum

Reading time: 5 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

O Amazon Cognito é utilizado para autenticação, autorização e gerenciamento de usuários em aplicações web e móveis. Ele permite que os usuários tenham a flexibilidade de fazer login diretamente usando um nome de usuário e senha ou indiretamente através de um terceiro, incluindo Facebook, Amazon, Google ou Apple.

Central ao Amazon Cognito estão dois componentes principais:

  1. User Pools: Estes são diretórios projetados para os usuários do seu aplicativo, oferecendo funcionalidades de cadastro e login.
  2. Identity Pools: Esses pools são instrumentais na autorização de usuários para acessar diferentes serviços da AWS. Eles não estão diretamente envolvidos no processo de login ou cadastro, mas são cruciais para o acesso a recursos após a autenticação.

User pools

Para aprender o que é um Cognito User Pool check:

Cognito User Pools

Identity pools

Para aprender o que é um Cognito Identity Pool check:

Cognito Identity Pools

Enumeration

bash
# List Identity Pools
aws cognito-identity list-identity-pools --max-results 60
aws cognito-identity describe-identity-pool --identity-pool-id "eu-west-2:38b294756-2578-8246-9074-5367fc9f5367"
aws cognito-identity list-identities --identity-pool-id <ident-pool-id> --max-results 60
aws cognito-identity get-identity-pool-roles --identity-pool-id <ident-pool-id>

# Identities Datasets
## Get dataset of identity id (inside identity pool)
aws cognito-sync list-datasets --identity-pool-id <ident-pool-id> --identity-id <ident-id>
## Get info of the dataset
aws cognito-sync describe-dataset --identity-pool-id <value> --identity-id <value> --dataset-name <value>
## Get dataset records
aws cognito-sync list-records --identity-pool-id <value> --identity-id <value> --dataset-name <value>

# User Pools
## Get pools
aws cognito-idp list-user-pools --max-results 60

## Get users
aws cognito-idp list-users --user-pool-id <user-pool-id>

## Get groups
aws cognito-idp list-groups --user-pool-id <user-pool-id>

## Get users in a group
aws cognito-idp list-users-in-group --user-pool-id <user-pool-id> --group-name <group-name>

## List App IDs of a user pool
aws cognito-idp list-user-pool-clients --user-pool-id <user-pool-id>

## List configured identity providers for a user pool
aws cognito-idp list-identity-providers --user-pool-id <user-pool-id>

## List user import jobs
aws cognito-idp list-user-import-jobs --user-pool-id <user-pool-id> --max-results 60

## Get MFA config of a user pool
aws cognito-idp get-user-pool-mfa-config --user-pool-id <user-pool-id>

## Get risk configuration
aws cognito-idp describe-risk-configuration --user-pool-id <user-pool-id>

Identity Pools - Enumeração Não Autenticada

Apenas conhecendo o ID do Pool de Identidade, você pode ser capaz de obter credenciais do papel associado a usuários não autenticados (se houver). Veja como aqui.

User Pools - Enumeração Não Autenticada

Mesmo que você não conheça um nome de usuário válido dentro do Cognito, você pode ser capaz de enumerar nomes de usuários válidos, BF as senhas ou até mesmo registrar um novo usuário apenas conhecendo o ID do cliente do App (que geralmente é encontrado no código-fonte). Veja como aqui.

Privesc

AWS - Cognito Privesc

Acesso Não Autenticado

AWS - Cognito Unauthenticated Enum

Persistência

AWS - Cognito Persistence

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