# AWS - Cognito Unauthenticated Enum

{{#include ../../../../banners/hacktricks-training.md}}

## Unauthenticated Cognito

Cognito è un servizio AWS che permette agli sviluppatori di **concedere agli utenti della loro app l'accesso ai servizi AWS**. Gli sviluppatori assegneranno **IAM roles agli utenti autenticati** nella loro app (potenzialmente chiunque potrà semplicemente registrarsi) e possono anche concedere un **IAM role to unauthenticated users**.

Per informazioni di base su Cognito consulta:

{{#ref}}
../../aws-services/aws-cognito-enum/
{{#endref}}

### Identity Pool ID

Identity Pools possono concedere **IAM roles to unauthenticated users** a chi semplicemente **know the Identity Pool ID** (che è piuttosto comune da **find**), e un attaccante con queste informazioni potrebbe provare a **access that IAM rol**e e sfruttarlo.\
Inoltre, IAM roles potrebbero anche essere assegnati a **authenticated users** che accedono all'Identity Pool. Se un attaccante può **register a user** o ha già **access to the identity provider** usato nell'identity pool, potrebbe ottenere accesso al **IAM role being given to authenticated** users e abusarne i privilegi.

[**Check how to do that here**](../../aws-services/aws-cognito-enum/cognito-identity-pools.md).

### User Pool ID

Per impostazione predefinita Cognito permette di **register new user**. Essere in grado di registrare un utente potrebbe darti **access** all'**underlaying application** o al **authenticated IAM access role of an Identity Pool** che accetta come identity provider il Cognito User Pool. [**Check how to do that here**](../../aws-services/aws-cognito-enum/cognito-user-pools.md#registration).

### Pacu modules for pentesting and enumeration

[Pacu](https://github.com/RhinoSecurityLabs/pacu), il framework di exploitation per AWS, ora include i moduli "cognito__enum" e "cognito__attack" che automatizzano l'enumeration di tutti gli asset Cognito in un account e segnalano configurazioni deboli, attributi utente usati per il controllo accessi, ecc., e automatizzano anche la creazione di utenti (incluso il supporto MFA) e il privilege escalation basato su attributi personalizzati modificabili, credenziali utilizzabili dell'identity pool, ruoli assumibili nei token id, ecc.

Per una descrizione delle funzioni dei moduli vedi la parte 2 del [blog post](https://rhinosecuritylabs.com/aws/attacking-aws-cognito-with-pacu-p2). Per le istruzioni di installazione vedi la pagina principale di [Pacu](https://github.com/RhinoSecurityLabs/pacu).

#### Usage

Sample `cognito__attack` usage to attempt user creation and all privesc vectors against a given identity pool and 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
```
Esempio di utilizzo di cognito\_\_enum per raccogliere tutti i user pools, user pool clients, identity pools, users, ecc. visibili nell'account AWS corrente:
```bash
Pacu (new:test) > run cognito__enum
```
{{#include ../../../../banners/hacktricks-training.md}}
