AWS - Cognito Unauthenticated Enum

Reading time: 4 minutes

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks

Unauthenticated Cognito

Cognito est un service AWS qui permet aux développeurs de donner à leurs utilisateurs d'application l'accès aux services AWS. Les développeurs attribuent des IAM roles to authenticated users dans leur application (potentiellement les gens pourront simplement s'inscrire) et ils peuvent aussi attribuer un IAM role to unauthenticated users.

Pour des informations de base sur Cognito, consultez :

AWS - Cognito Enum

Identity Pool ID

Les Identity Pools peuvent accorder des IAM roles to unauthenticated users à des personnes qui se contentent de know the Identity Pool ID (ce qui est assez courant à find), et un attaquant disposant de cette information pourrait tenter de access that IAM role et l'exploiter.
De plus, des IAM roles peuvent aussi être assignés à des authenticated users qui accèdent à l'Identity Pool. Si un attaquant peut register a user ou a déjà access to the identity provider utilisé dans l'identity pool, il pourrait accéder au IAM role being given to authenticated users et abuser de ses privilèges.

Voir comment faire ici.

User Pool ID

Par défaut, Cognito permet de register new user. Pouvoir enregistrer un utilisateur peut vous donner access à l'underlaying application ou au authenticated IAM access role of an Identity Pool qui accepte comme fournisseur d'identité le Cognito User Pool. Voir comment faire ici.

Pacu modules for pentesting and enumeration

Pacu, le framework d'exploitation AWS, inclut désormais les modules "cognito__enum" et "cognito__attack" qui automatisent l'enumeration de tous les Cognito assets dans un compte et signalent les configurations faibles, les attributs utilisateur utilisés pour le contrôle d'accès, etc., et automatisent aussi la création d'utilisateurs (incluant le support MFA) et l'escalade de privilèges basée sur des attributs personnalisés modifiables, des usable identity pool credentials, des assumable roles dans les id tokens, etc.

Pour une description des fonctions des modules, voyez la partie 2 du blog post. Pour les instructions d'installation, voyez la page principale de Pacu.

Usage

Exemple d'utilisation de cognito__attack pour tenter la création d'utilisateurs et tous les privesc vectors contre un identity pool et user pool client 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 user pools, user pool clients, identity pools, users, etc. visibles dans le compte AWS actuel:

bash
Pacu (new:test) > run cognito__enum

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks