AWS - Cognito Enum

Reading time: 4 minutes

tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks

Cognito

Amazon Cognito è utilizzato per autenticazione, autorizzazione e gestione degli utenti nelle applicazioni web e mobili. Consente agli utenti la flessibilità di accedere direttamente utilizzando un nome utente e una password o indirettamente tramite un terzo, inclusi Facebook, Amazon, Google o Apple.

Al centro di Amazon Cognito ci sono due componenti principali:

  1. User Pools: Questi sono directory progettate per gli utenti della tua app, offrendo funzionalità di registrazione e accesso.
  2. Identity Pools: Questi pool sono strumentali per autorizzare gli utenti ad accedere a diversi servizi AWS. Non sono direttamente coinvolti nel processo di accesso o registrazione, ma sono cruciali per l'accesso alle risorse dopo l'autenticazione.

User pools

Per sapere cos'è un Cognito User Pool check:

Cognito User Pools

Identity pools

Per sapere cos'è un 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 - Enumerazione non autenticata

Solo conoscendo l'ID del Pool di Identità potresti essere in grado di ottenere le credenziali del ruolo associato agli utenti non autenticati (se presenti). Controlla come qui.

User Pools - Enumerazione non autenticata

Anche se non conosci un nome utente valido all'interno di Cognito, potresti essere in grado di enumerare nomi utente validi, BF le password o addirittura registrare un nuovo utente solo conoscendo l'ID del client dell'app (che di solito si trova nel codice sorgente). Controlla come qui.

Privesc

AWS - Cognito Privesc

Accesso non autenticato

AWS - Cognito Unauthenticated Enum

Persistenza

AWS - Cognito Persistence

tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks