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

This commit is contained in:
Translator
2025-08-18 14:21:58 +00:00
parent 314fbcb8fa
commit f90ef4a317

View File

@@ -7,7 +7,7 @@
Los grupos de identidades desempeñan un papel crucial al permitir que sus usuarios **adquieran credenciales temporales**. Estas credenciales son esenciales para acceder a varios servicios de AWS, incluyendo, pero no limitado a, Amazon S3 y DynamoDB. Una característica notable de los grupos de identidades es su soporte tanto para usuarios anónimos como para una variedad de proveedores de identidad para la autenticación de usuarios. Los proveedores de identidad compatibles incluyen:
- Grupos de usuarios de Amazon Cognito
- Opciones de inicio de sesión social como Facebook, Google, Login con Amazon y Sign in with Apple
- Opciones de inicio de sesión social como Facebook, Google, Login with Amazon y Sign in with Apple
- Proveedores compatibles con OpenID Connect (OIDC)
- Proveedores de identidad SAML (Security Assertion Markup Language)
- Identidades autenticadas por desarrolladores
@@ -59,7 +59,7 @@ Ejemplo de uso de cognito\_\_enum para recopilar todos los grupos de usuarios, c
```bash
Pacu (new:test) > run cognito__enum
```
- [Cognito Scanner](https://github.com/padok-team/cognito-scanner) es una herramienta CLI en python que implementa diferentes ataques a Cognito, incluyendo la creación no deseada de cuentas y la escalación de grupos de identidades.
- [Cognito Scanner](https://github.com/padok-team/cognito-scanner) es una herramienta CLI en python que implementa diferentes ataques en Cognito, incluyendo la creación no deseada de cuentas y la escalación de grupos de identidad.
#### Instalación
```bash
@@ -80,7 +80,7 @@ Lo único que un atacante necesita saber para **obtener credenciales de AWS** en
> [!TIP]
> El **rol de Cognito no autenticado creado a través de** se llama por defecto `Cognito_<Nombre del Pool de Identidad>Unauth_Role`
Si encuentras un ID de Pools de Identidad codificado y permite usuarios no autenticados, puedes obtener credenciales de AWS con:
Si encuentras un ID de Pool de Identidad codificado y permite usuarios no autenticados, puedes obtener credenciales de AWS con:
```python
import requests
@@ -112,7 +112,7 @@ 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]
> Tenga en cuenta que, por defecto, un usuario cognito **no autenticado NO PUEDE tener ningún permiso, incluso si se le asignó a través de una política**. Consulte la siguiente sección.
> Tenga en cuenta que, por defecto, un **usuario no autenticado de cognito NO PUEDE tener ningún permiso, incluso si se le asignó a través de una política**. Consulte la siguiente sección.
### Flujo de autenticación mejorado vs básico
@@ -142,7 +142,7 @@ Teniendo un conjunto de credenciales de IAM, deberías verificar [qué acceso ti
> [!NOTE]
> Recuerda que a los **usuarios autenticados** probablemente se les otorguen **permisos diferentes**, así que si puedes **registrarte dentro de la aplicación**, intenta hacerlo y obtener las nuevas credenciales.
También podría haber **roles** disponibles para **usuarios autenticados que acceden al Identity Pool**.
También podría haber **roles** disponibles para **usuarios autenticados accediendo al Identity Pool**.
Para esto, podrías necesitar tener acceso al **proveedor de identidad**. Si ese es un **Cognito User Pool**, tal vez puedas abusar del comportamiento predeterminado y **crear un nuevo usuario tú mismo**.
@@ -151,22 +151,36 @@ Para esto, podrías necesitar tener acceso al **proveedor de identidad**. Si ese
De todos modos, el **siguiente ejemplo** espera que ya hayas iniciado sesión dentro de un **Cognito User Pool** utilizado para acceder al Identity Pool (no olvides que otros tipos de proveedores de identidad también podrían estar 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>"}'
# Obtén el identity_id de la respuesta del 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>"}'
# En el IdToken puedes encontrar roles a los que un usuario tiene acceso debido a los Grupos del User Pool
# Usa el --custom-role-arn para obtener credenciales para un rol 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** — estos pueden no funcionar con la CLI de AWS actual:
<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]