cognito-identity:update-identity-pool

¿Crees tener lo que se necesita para ser un experto en Pentesting contra AWS? Si nuestro libro te abrió los ojos a las posibilidades de la ciberseguridad ofensiva o si ya cuentas con habilidades en este campo, es momento de subir de nivel. Te retamos a certificarte en el CPNA - Curso Profesional de Pentesting Contra AWS. No será fácil: te enfrentarás a un examen riguroso de 12 horas donde deberás hackear una infraestructura completa alojada en AWS. ¿Listo para el desafío? Acepta el reto y demuestra tu verdadero potencial.

Este contenido se adentra en una técnica avanzada de post-explotación, crucial para entender cómo maximizar el impacto de un ataque una vez que se ha conseguido penetrar en un sistema. Es importante recalcar que la ejecución de esta técnica presupone que el atacante o consultor ya ha obtenido ciertos niveles de privilegios dentro de la infraestructura objetivo. Sin estos privilegios, llevar a cabo el ataque explicado aquí no sería posible. Proceder con cautela y siempre dentro del marco legal y ético es fundamental.

En el contexto de la seguridad de la identidad y el acceso en aplicaciones alojadas en AWS, la capacidad para modificar pools de identidad a través del permiso cognito-identity:update-identity-pool es un vector de ataque potencialmente significativo. Este permiso permite a un atacante configurar un pool de identidad para utilizar un proveedor de identidades de su elección, lo cual puede ser manipulado para obtener acceso no autorizado a recursos protegidos.

Modificación de un Pool de Identidad con AWS CLI

Configuración de Proveedores de Identidades

La flexibilidad de AWS Cognito para integrarse con diversos proveedores de identidad es una de sus características más poderosas. Mediante el siguiente comando CLI, un administrador puede actualizar la configuración de un pool de identidad para especificar un nuevo proveedor de identidades, como un User Pool de Cognito o cualquier otro proveedor compatible:

aws cognito-identity update-identity-pool \
    --identity-pool-id <value> \
    --identity-pool-name <value> \
    [--allow-unauthenticated-identities | --no-allow-unauthenticated-identities] \
    --cognito-identity-providers ProviderName=user-pool-id,ClientId=client-id,ServerSideTokenCheck=false

Este comando actualiza un pool de identidad existente especificando:

  • --identity-pool-id: El identificador único del pool de identidad que se desea modificar.

  • --identity-pool-name: El nombre del pool de identidad.

  • --allow-unauthenticated-identities o --no-allow-unauthenticated-identities: Indica si el pool de identidad permite identidades no autenticadas.

  • --cognito-identity-providers: Configura el proveedor de identidades especificando el User Pool de Cognito como proveedor, junto con el ID del cliente y la configuración de verificación de token del lado del servidor.

Este comando permite la incorporación de un proveedor de identidades específico al pool de identidad, configurando aspectos críticos como el consentimiento para identidades no autenticadas y el flujo de autenticación clásica.

Autenticación y Obtención de Credenciales

Una vez establecido el proveedor de identidades, el proceso para autenticarse y obtener credenciales IAM a través del pool de identidad actualizado sigue varios pasos:

  1. Autenticación en el Proveedor de Identidades: El usuario debe autenticarse primero en el proveedor de identidades configurado, lo cual resulta en la obtención de un token ID.

  2. Registro y Obtención de ID de Identidad: Utilizando el token ID, se puede solicitar un ID de identidad de Cognito, que asocia la sesión de usuario con un identificador único dentro del pool de identidad.

aws cognito-identity get-id \
    --identity-pool-id <id_pool_id> \
    --logins cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>=<ID_TOKEN>
  1. Obtención de Credenciales de AWS: Finalmente, con el ID de identidad, el usuario puede solicitar credenciales de AWS, permitiendo el acceso a recursos según el rol IAM configurado para usuarios autenticados en el pool de identidad.

aws cognito-identity get-credentials-for-identity \
    --identity-id <identity_id> \
    --logins cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>=<ID_TOKEN>

Habilitación de Autenticación Básica

Es posible también habilitar la autenticación básica y el flujo clásico al actualizar el pool de identidad, lo que amplía las posibilidades de autenticación:

aws cognito-identity update-identity-pool \
    --identity-pool-id <value> \
    --identity-pool-name <value> \
    --allow-unauthenticated-identities
    --allow-classic-flow

Última actualización