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

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 :

AWS - Cognito Enum

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.

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.

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

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. Pour des instructions d'installation, voir la page principale 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

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