# AWS - Cognito Unauthenticated Enum

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

## Cognito non authentifié

Cognito est un service AWS qui permet aux développeurs de **donner à leurs utilisateurs d'application accès aux services AWS**. Les développeurs accorderont **des rôles IAM aux utilisateurs authentifiés** dans leur application (potentiellement, les gens pourront simplement s'inscrire) et ils peuvent également accorder un **rôle IAM aux utilisateurs non authentifiés**.

Pour des informations de base sur Cognito, consultez :

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

### ID de Pool d'Identité

Les Pools d'Identité peuvent accorder **des rôles IAM aux utilisateurs non authentifiés** qui **connaissent l'ID de Pool d'Identité** (ce qui est assez courant à **trouver**), et un attaquant avec cette information pourrait essayer d'**accéder à ce rôle IAM** et de l'exploiter.\
De plus, des rôles IAM pourraient également être attribués à **des utilisateurs authentifiés** qui accèdent au Pool d'Identité. Si un attaquant peut **enregistrer un utilisateur** ou a déjà **accès au fournisseur d'identité** utilisé dans le pool d'identité, il pourrait accéder au **rôle IAM attribué aux utilisateurs authentifiés** et abuser de ses privilèges.

[**Vérifiez comment faire cela ici**](../aws-services/aws-cognito-enum/cognito-identity-pools.md).

### ID de Pool d'Utilisateurs

Par défaut, Cognito permet de **s'inscrire de nouveaux utilisateurs**. Être capable d'enregistrer un utilisateur pourrait vous donner **accès** à l'**application sous-jacente** ou au **rôle d'accès IAM authentifié d'un Pool d'Identité** qui accepte comme fournisseur d'identité le Pool d'Utilisateurs Cognito. [**Vérifiez comment faire cela ici**](../aws-services/aws-cognito-enum/cognito-user-pools.md#registration).

### Modules Pacu pour le pentesting et l'énumération

[Pacu](https://github.com/RhinoSecurityLabs/pacu), le framework d'exploitation AWS, inclut maintenant les modules "cognito\_\_enum" et "cognito\_\_attack" qui automatisent l'énumération de tous les actifs Cognito dans un compte et signalent les configurations faibles, les attributs d'utilisateur utilisés pour le contrôle d'accès, etc., et automatisent également la création d'utilisateurs (y compris le support MFA) et l'escalade de privilèges basée sur des attributs personnalisables modifiables, des identifiants de pool d'identité utilisables, des rôles assumables dans les jetons d'identité, etc.

Pour une description des fonctions des modules, voir la partie 2 du [blog](https://rhinosecuritylabs.com/aws/attacking-aws-cognito-with-pacu-p2). Pour des instructions d'installation, voir la page principale [Pacu](https://github.com/RhinoSecurityLabs/pacu).

#### Utilisation

Exemple d'utilisation de `cognito__attack` pour tenter la création d'utilisateur et tous les vecteurs de privesc contre un pool d'identité et un client de pool d'utilisateurs donnés :
```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
```
Exemple d'utilisation de cognito\_\_enum pour rassembler tous les groupes d'utilisateurs, les clients de groupes d'utilisateurs, les groupes d'identité, les utilisateurs, etc. visibles dans le compte AWS actuel :
```bash
Pacu (new:test) > run cognito__enum
```
{{#include ../../../banners/hacktricks-training.md}}
