From 80bc48a33020f4934729123ee5dbc3618dd538db Mon Sep 17 00:00:00 2001 From: Translator Date: Mon, 18 Aug 2025 14:18:25 +0000 Subject: [PATCH] Translated ['src/pentesting-cloud/aws-security/aws-services/aws-cognito- --- .../cognito-identity-pools.md | 58 ++++++++++++------- 1 file changed, 36 insertions(+), 22 deletions(-) diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-identity-pools.md b/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-identity-pools.md index 5fc812271..3a68a8480 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-identity-pools.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-identity-pools.md @@ -2,7 +2,7 @@ {{#include ../../../../banners/hacktricks-training.md}} -## Informazioni di Base +## Informazioni di base Le identity pools svolgono un ruolo cruciale consentendo ai tuoi utenti di **acquisire credenziali temporanee**. Queste credenziali sono essenziali per accedere a vari servizi AWS, inclusi, ma non limitati a, Amazon S3 e DynamoDB. Una caratteristica notevole delle identity pools è il loro supporto sia per utenti ospiti anonimi che per una gamma di provider di identità per l'autenticazione degli utenti. I provider di identità supportati includono: @@ -43,7 +43,7 @@ Inoltre, il servizio **cognito-sync** è il servizio che consente di **gestire e ### Tools for pentesting -- [Pacu](https://github.com/RhinoSecurityLabs/pacu), il framework di sfruttamento AWS, ora include i moduli "cognito\_\_enum" e "cognito\_\_attack" che automatizzano l'enumerazione di tutte le risorse Cognito in un account e segnalano configurazioni deboli, attributi utente utilizzati per il controllo degli accessi, ecc., e automatizzano anche la creazione di utenti (incluso il supporto MFA) e l'escalation dei privilegi basata su attributi personalizzati modificabili, credenziali di pool di identità utilizzabili, ruoli assunti nei token id, ecc. +- [Pacu](https://github.com/RhinoSecurityLabs/pacu), il framework di sfruttamento AWS, ora include i moduli "cognito\_\_enum" e "cognito\_\_attack" che automatizzano l'enumerazione di tutte le risorse Cognito in un account e segnalano configurazioni deboli, attributi utente utilizzati per il controllo degli accessi, ecc., e automatizzano anche la creazione di utenti (incluso il supporto MFA) e l'escalation dei privilegi basata su attributi personalizzati modificabili, credenziali di pool di identità utilizzabili, ruoli assunibili nei token id, ecc. Per una descrizione delle funzioni dei moduli vedere la parte 2 del [blog post](https://rhinosecuritylabs.com/aws/attacking-aws-cognito-with-pacu-p2). Per le istruzioni di installazione vedere la pagina principale di [Pacu](https://github.com/RhinoSecurityLabs/pacu). @@ -71,16 +71,16 @@ $ cognito-scanner --help ``` Per ulteriori informazioni controlla https://github.com/padok-team/cognito-scanner -## Accesso ai ruoli IAM +## Accesso ai Ruoli IAM -### Non autenticato +### Non Autenticato -L'unica cosa che un attaccante deve sapere per **ottenere credenziali AWS** in un'app Cognito come utente non autenticato è il **ID del pool di identità**, e questo **ID deve essere hardcoded** nell'**applicazione** web/mobile per poterlo utilizzare. Un ID appare così: `eu-west-1:098e5341-8364-038d-16de-1865e435da3b` (non è bruteforceabile). +L'unica cosa che un attaccante deve sapere per **ottenere credenziali AWS** in un'app Cognito come utente non autenticato è il **ID del Pool di Identità**, e questo **ID deve essere hardcoded** nell'**applicazione** web/mobile per poterlo utilizzare. Un ID appare così: `eu-west-1:098e5341-8364-038d-16de-1865e435da3b` (non è bruteforceabile). > [!TIP] -> Il **ruolo IAM Cognito non autenticato creato tramite è chiamato** per impostazione predefinita `Cognito_Unauth_Role` +> Il **ruolo IAM Cognito non autenticato creato tramite è chiamato** per impostazione predefinita `Cognito_Unauth_Role` -Se trovi un ID del pool di identità hardcoded e consente utenti non autenticati, puoi ottenere credenziali AWS con: +Se trovi un ID di Pool di Identità hardcoded e consente utenti non autenticati, puoi ottenere credenziali AWS con: ```python import requests @@ -112,11 +112,11 @@ aws cognito-identity get-id --identity-pool-id --no-sign aws cognito-identity get-credentials-for-identity --identity-id --no-sign ``` > [!WARNING] -> Nota che per impostazione predefinita un cognito **utente non autenticato NON PUÒ avere alcun permesso, anche se assegnato tramite una policy**. Controlla la sezione seguente. +> Nota che per impostazione predefinita un cognito **utente NON PUÒ avere alcun permesso, anche se assegnato tramite una policy**. Controlla la sezione seguente. ### Flusso di autenticazione avanzato vs di base -La sezione precedente ha seguito il **flusso di autenticazione avanzato predefinito**. Questo flusso imposta una **policy di sessione** [**ristrettiva**](../../aws-basic-information/index.html#session-policies) per la sessione del ruolo IAM generato. Questa policy permetterà solo alla sessione di [**utilizzare i servizi di questo elenco**](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies-scope-down-services) (anche se il ruolo aveva accesso ad altri servizi). +La sezione precedente ha seguito il **flusso di autenticazione avanzato predefinito**. Questo flusso imposta una **policy di sessione** [**restrittiva**](../../aws-basic-information/index.html#session-policies) per la sessione del ruolo IAM generato. Questa policy permetterà solo alla sessione di [**utilizzare i servizi di questo elenco**](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies-scope-down-services) (anche se il ruolo aveva accesso ad altri servizi). Tuttavia, c'è un modo per bypassare questo, se il **pool di identità ha abilitato il "Flusso di base (classico)"**, l'utente sarà in grado di ottenere una sessione utilizzando quel flusso che **non avrà quella policy di sessione restrittiva**. ```bash @@ -133,43 +133,57 @@ aws sts assume-role-with-web-identity --role-arn "arn:aws:iam:::role/ [!WARNING] > Se ricevi questo **errore**, è perché il **flusso di base non è abilitato (predefinito)** -> `An error occurred (InvalidParameterException) when calling the GetOpenIdToken operation: Basic (classic) flow is not enabled, please use enhanced flow.` +> `Si è verificato un errore (InvalidParameterException) durante la chiamata all'operazione GetOpenIdToken: Il flusso di base (classico) non è abilitato, si prega di utilizzare il flusso avanzato.` Avendo un insieme di credenziali IAM, dovresti controllare [quali accessi hai](../../index.html#whoami) e provare a [escalare i privilegi](../../aws-privilege-escalation/index.html). ### Autenticato > [!NOTE] -> Ricorda che gli **utenti autenticati** probabilmente avranno **permessi diversi**, quindi se puoi **registrarti all'interno dell'app**, prova a farlo e ottieni le nuove credenziali. +> Ricorda che gli **utenti autenticati** potrebbero avere **permessi diversi**, quindi se puoi **registrarti all'interno dell'app**, prova a farlo e ottieni le nuove credenziali. Potrebbero esserci anche **ruoli** disponibili per gli **utenti autenticati che accedono al Pool di Identità**. Per questo potresti aver bisogno di avere accesso al **fornitore di identità**. Se si tratta di un **Cognito User Pool**, forse puoi sfruttare il comportamento predefinito e **creare un nuovo utente tu stesso**. > [!TIP] -> Il **ruolo IAM Cognito autenticato creato tramite** si chiama per impostazione predefinita `Cognito_Auth_Role` +> Il **ruolo autenticato IAM Cognito creato tramite** si chiama per impostazione predefinita `Cognito_Auth_Role` Comunque, il **seguente esempio** presuppone che tu sia già loggato all'interno di un **Cognito User Pool** utilizzato per accedere al Pool di Identità (non dimenticare che potrebbero essere configurati anche altri tipi di fornitori di identità). -
aws cognito-identity get-id \
+

+# Formato aggiornato
+aws cognito-identity get-id \
 --identity-pool-id  \
---logins cognito-idp..amazonaws.com/=
+--logins '{"cognito-idp..amazonaws.com/": ""}'
 
-# Ottieni l'identity_id dalla risposta del comando precedente
 aws cognito-identity get-credentials-for-identity \
 --identity-id  \
---logins cognito-idp..amazonaws.com/=
+--logins '{"cognito-idp..amazonaws.com/": ""}'
 
-
-# Nell'IdToken puoi trovare i ruoli a cui un utente ha accesso grazie ai Gruppi del User Pool
-# Usa il --custom-role-arn per ottenere credenziali per un ruolo specifico
 aws cognito-identity get-credentials-for-identity \
 --identity-id  \
-    --custom-role-arn  \
-    --logins cognito-idp..amazonaws.com/=
+--custom-role-arn  \
+--logins '{"cognito-idp..amazonaws.com/": ""}'
+
+ +> **Formato deprecato** — questi potrebbero non funzionare più con l'attuale AWS CLI: +

+aws cognito-identity get-id \
+--identity-pool-id  \
+--logins cognito-idp..amazonaws.com/=
+
+aws cognito-identity get-credentials-for-identity \
+--identity-id  \
+--logins cognito-idp..amazonaws.com/=
+
+aws cognito-identity get-credentials-for-identity \
+--identity-id  \
+--custom-role-arn  \
+--logins cognito-idp..amazonaws.com/=
 
> [!WARNING] -> È possibile **configurare ruoli IAM diversi a seconda del fornitore di identità** con cui l'utente è loggato o anche semplicemente a seconda **dell'utente** (utilizzando le affermazioni). Pertanto, se hai accesso a diversi utenti tramite lo stesso o diversi fornitori, potrebbe **valere la pena effettuare il login e accedere ai ruoli IAM di tutti loro**. +> È possibile **configurare ruoli IAM diversi a seconda del fornitore di identità** con cui l'utente è loggato o anche semplicemente a seconda **dell'utente** (utilizzando le dichiarazioni). Pertanto, se hai accesso a diversi utenti tramite lo stesso o diversi fornitori, potrebbe essere **utile accedere e accedere ai ruoli IAM di tutti loro**. {{#include ../../../../banners/hacktricks-training.md}}