AWS - Cognito Enum

Suporte HackTricks

Cognito

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 façam login diretamente usando um nome de usuário e senha ou indiretamente através de um terceiro, incluindo Facebook, Amazon, Google ou Apple.

Os componentes principais do Amazon Cognito são:

  1. User Pools: Estes são diretórios projetados para os usuários do seu aplicativo, oferecendo funcionalidades de inscrição e login.

  2. Identity Pools: Estes pools são instrumentais na autorização de usuários para acessar diferentes serviços AWS. Eles não estão diretamente envolvidos no processo de login ou inscrição, mas são cruciais para o acesso a recursos após a autenticação.

User pools

Para aprender o que é um Cognito User Pool, confira:

Cognito User Pools

Identity pools

Para aprender o que é um Cognito Identity Pool, confira:

Cognito Identity Pools

Enumeração

# 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-poo

## 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 sabendo o ID do Identity Pool 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 saiba 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 sabendo 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
Support HackTricks

Last updated