AWS - Cognito Unauthenticated Enum

Reading time: 4 minutes

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks

Unauthenticated Cognito

Cognito ist ein AWS-Dienst, der Entwicklern ermöglicht, ihren App-Nutzern Zugriff auf AWS-Services zu gewähren. Entwickler werden in ihrer App IAM roles an authentifizierte Nutzer vergeben (potenziell können sich Personen einfach registrieren) und sie können auch eine IAM role an nicht-authentifizierte Nutzer vergeben.

Für grundlegende Informationen zu Cognito siehe:

AWS - Cognito Enum

Identity Pool ID

Identity Pools können IAM roles an nicht-authentifizierte Nutzer vergeben, die lediglich die Identity Pool ID kennen (was recht häufig gefunden wird), und ein Angreifer mit dieser Information könnte versuchen, auf diese IAM role zuzugreifen und sie auszunutzen.
Außerdem können IAM roles auch authentifizierten Nutzern zugewiesen werden, die auf den Identity Pool zugreifen. Wenn ein Angreifer einen Nutzer registrieren kann oder bereits Zugriff auf den Identity Provider hat, der im Identity Pool verwendet wird, könnte er auf die IAM role, die authentifizierten Nutzern gegeben wird, zugreifen und deren Berechtigungen missbrauchen.

Check how to do that here.

User Pool ID

Standardmäßig erlaubt Cognito die Registrierung neuer Nutzer. Die Möglichkeit, einen Nutzer zu registrieren, kann Ihnen Zugriff auf die zugrundeliegende Anwendung oder auf die authentifizierte IAM access role eines Identity Pools verschaffen, der den Cognito User Pool als Identity Provider akzeptiert. Check how to do that here.

Pacu modules for pentesting and enumeration

Pacu (https://github.com/RhinoSecurityLabs/pacu), das AWS exploitation framework, enthält jetzt die Module "cognito__enum" und "cognito__attack", die die Enumeration aller Cognito-Ressourcen in einem Account automatisieren und schwache Konfigurationen, für Zugriffskontrolle verwendete Benutzerattribute usw. markieren. Sie automatisieren außerdem die Benutzererstellung (inkl. MFA-Unterstützung) und Privilegieneskalation basierend auf modifizierbaren benutzerdefinierten Attributen, nutzbaren Identity Pool Credentials, annehmbaren Rollen in id tokens usw.

Für eine Beschreibung der Funktionen der Module siehe Teil 2 des Blogposts. Für Installationsanweisungen siehe die Hauptseite von 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

Beispielhafte Nutzung von cognito__enum, um alle user pools, user pool clients, identity pools, users usw. zu sammeln, die im aktuellen AWS-Konto sichtbar sind:

bash
Pacu (new:test) > run cognito__enum

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks