Translated ['src/pentesting-cloud/aws-security/aws-services/aws-cognito-

This commit is contained in:
Translator
2025-08-18 14:22:05 +00:00
parent de7528dfb3
commit 97978853eb

View File

@@ -2,9 +2,9 @@
{{#include ../../../../banners/hacktricks-training.md}}
## Basic Information
## Informações Básicas
Os pools de identidade desempenham um papel crucial ao permitir que seus usuários **adquiram credenciais temporárias**. Essas credenciais são essenciais para acessar vários serviços da AWS, incluindo, mas não se limitando a, Amazon S3 e DynamoDB. Um recurso notável dos pools de identidade é seu suporte tanto para usuários convidados anônimos quanto para uma variedade de provedores de identidade para autenticação de usuários. Os provedores de identidade suportados incluem:
Os pools de identidade desempenham um papel crucial ao permitir que seus usuários **adquiram credenciais temporárias**. Essas credenciais são essenciais para acessar vários serviços da AWS, incluindo, mas não se limitando a, Amazon S3 e DynamoDB. Um recurso notável dos pools de identidade é seu suporte tanto para usuários anônimos quanto para uma variedade de provedores de identidade para autenticação de usuários. Os provedores de identidade suportados incluem:
- Amazon Cognito user pools
- Opções de login social, como Facebook, Google, Login com Amazon e Sign in with Apple
@@ -43,7 +43,7 @@ Além disso, o serviço **cognito-sync** é o serviço que permite **gerenciar e
### Tools for pentesting
- [Pacu](https://github.com/RhinoSecurityLabs/pacu), o framework de exploração da AWS, agora inclui os módulos "cognito\_\_enum" e "cognito\_\_attack" que automatizam a enumeração de todos os ativos do Cognito em uma conta e sinalizam configurações fracas, atributos de usuário usados para controle de acesso, etc., e também automatizam a criação de usuários (incluindo suporte a MFA) e escalonamento de privilégios com base em atributos personalizados modificáveis, credenciais de pool de identidade utilizáveis, funções assumíveis em tokens de id, etc.
- [Pacu](https://github.com/RhinoSecurityLabs/pacu), o framework de exploração AWS, agora inclui os módulos "cognito\_\_enum" e "cognito\_\_attack" que automatizam a enumeração de todos os ativos Cognito em uma conta e sinalizam configurações fracas, atributos de usuário usados para controle de acesso, etc., e também automatizam a criação de usuários (incluindo suporte a MFA) e escalonamento de privilégios com base em atributos personalizados modificáveis, credenciais de pool de identidade utilizáveis, funções assumíveis em tokens de id, etc.
Para uma descrição das funções dos módulos, veja a parte 2 do [blog post](https://rhinosecuritylabs.com/aws/attacking-aws-cognito-with-pacu-p2). Para instruções de instalação, veja a página principal do [Pacu](https://github.com/RhinoSecurityLabs/pacu).
@@ -112,13 +112,13 @@ aws cognito-identity get-id --identity-pool-id <identity_pool_id> --no-sign
aws cognito-identity get-credentials-for-identity --identity-id <identity_id> --no-sign
```
> [!WARNING]
> Note que, por padrão, um usuário cognito **não autenticado NÃO PODE ter nenhuma permissão, mesmo que tenha sido atribuída via uma política**. Verifique a seção a seguir.
> Note que, por padrão, um **usuário não autenticado do cognito NÃO PODE ter nenhuma permissão, mesmo que tenha sido atribuída via uma política**. Verifique a seção a seguir.
### Fluxo de Autenticação Aprimorado vs Básico
A seção anterior seguiu o **fluxo de autenticação aprimorado padrão**. Este fluxo define uma **política de sessão** [**restritiva**](../../aws-basic-information/index.html#session-policies) para a sessão do papel IAM gerado. Esta política permitirá apenas que a sessão [**use os serviços desta lista**](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies-scope-down-services) (mesmo que o papel tenha acesso a outros serviços).
No entanto, há uma maneira de contornar isso; se o **pool de Identidade tiver "Fluxo Básico (Clássico)" habilitado**, o usuário poderá obter uma sessão usando esse fluxo que **não terá essa política de sessão restritiva**.
No entanto, há uma maneira de contornar isso; se o **pool de Identidade tiver o "Fluxo Básico (Clássico)" habilitado**, o usuário poderá obter uma sessão usando esse fluxo que **não terá essa política de sessão restritiva**.
```bash
# Get auth ID
aws cognito-identity get-id --identity-pool-id <identity_pool_id> --no-sign
@@ -142,34 +142,48 @@ Tendo um conjunto de credenciais IAM, você deve verificar [quais acessos você
> [!NOTE]
> Lembre-se de que **usuários autenticados** provavelmente terão **permissões diferentes**, então se você puder **se inscrever dentro do aplicativo**, tente fazer isso e obtenha as novas credenciais.
Também pode haver **papéis** disponíveis para **usuários autenticados acessando o Identity Pool**.
Também pode haver **funções** disponíveis para **usuários autenticados acessando o Pool de Identidade**.
Para isso, você pode precisar ter acesso ao **provedor de identidade**. Se for um **Cognito User Pool**, talvez você possa abusar do comportamento padrão e **criar um novo usuário você mesmo**.
> [!TIP]
> O **papel autenticado do IAM Cognito criado via** é chamado por padrão `Cognito_<Identity Pool name>Auth_Role`
> A **função IAM Cognito autenticada criada via** é chamada por padrão `Cognito_<Nome do Pool de Identidade>Auth_Role`
De qualquer forma, o **exemplo a seguir** espera que você já tenha feito login em um **Cognito User Pool** usado para acessar o Identity Pool (não se esqueça de que outros tipos de provedores de identidade também podem ser configurados).
De qualquer forma, o **exemplo a seguir** espera que você já tenha feito login em um **Cognito User Pool** usado para acessar o Pool de Identidade (não se esqueça de que outros tipos de provedores de identidade também podem ser configurados).
<pre class="language-bash"><code class="lang-bash">aws cognito-identity get-id \
<pre class="language-bash"><code class="lang-bash">
# Updated format
aws cognito-identity get-id \
--identity-pool-id <identity_pool_id> \
--logins cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>=<ID_TOKEN>
--logins '{"cognito-idp.<region>.amazonaws.com/<user_pool_id>": "<ID_TOKEN>"}'
# Obtenha o identity_id da resposta do comando anterior
aws cognito-identity get-credentials-for-identity \
--identity-id <identity_id> \
--logins cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>=<ID_TOKEN>
--logins '{"cognito-idp.<region>.amazonaws.com/<user_pool_id>": "<ID_TOKEN>"}'
# No IdToken você pode encontrar os papéis que um usuário tem acesso devido aos Grupos do User Pool
# Use o --custom-role-arn para obter credenciais para um papel específico
aws cognito-identity get-credentials-for-identity \
--identity-id <identity_id> \
<strong> --custom-role-arn <role_arn> \
</strong> --logins cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>=<ID_TOKEN>
--custom-role-arn <role_arn> \
--logins '{"cognito-idp.<region>.amazonaws.com/<user_pool_id>": "<ID_TOKEN>"}'
</code></pre>
> **Formato obsoleto** — estes podem não funcionar mais com o AWS CLI atual:
<pre class="language-bash"><code class="lang-bash">
aws cognito-identity get-id \
--identity-pool-id <identity_pool_id> \
--logins cognito-idp.<region>.amazonaws.com/<user_pool_id>=<ID_TOKEN>
aws cognito-identity get-credentials-for-identity \
--identity-id <identity_id> \
--logins cognito-idp.<region>.amazonaws.com/<user_pool_id>=<ID_TOKEN>
aws cognito-identity get-credentials-for-identity \
--identity-id <identity_id> \
--custom-role-arn <role_arn> \
--logins cognito-idp.<region>.amazonaws.com/<user_pool_id>=<ID_TOKEN>
</code></pre>
> [!WARNING]
> É possível **configurar diferentes papéis IAM dependendo do provedor de identidade** que o usuário está logado ou até mesmo apenas dependendo **do usuário** (usando claims). Portanto, se você tiver acesso a diferentes usuários através do mesmo ou de diferentes provedores, pode ser **vale a pena fazer login e acessar os papéis IAM de todos eles**.
> É possível **configurar diferentes funções IAM dependendo do provedor de identidade** que o usuário está logado ou até mesmo apenas dependendo **do usuário** (usando claims). Portanto, se você tiver acesso a diferentes usuários através do mesmo ou de diferentes provedores, pode valer a pena **fazer login e acessar as funções IAM de todos eles**.
{{#include ../../../../banners/hacktricks-training.md}}