AWS - Cognito Unauthenticated Enum

Reading time: 4 minutes

tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks

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:

AWS - Cognito Enum

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 role 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.

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.

Pacu modules for pentesting and enumeration

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. Per le istruzioni di installazione vedi la pagina principale di 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

tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks