cognito-identity:SetIdentityPoolRoles + iam:PassRole

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

Al profundizar en la administración de roles dentro de AWS Cognito, resulta esencial comprender la flexibilidad y el poder que este servicio ofrece para la gestión de identidades. AWS Cognito permite asignar roles específicos a usuarios autenticados y no autenticados mediante el uso de la interfaz de línea de comandos (CLI) de AWS, ofreciendo así un control granular sobre los permisos y accesos dentro de la infraestructura de AWS.

Asignación de Roles mediante AWS CLI

Establecimiento de Roles para Pools de Identidad

La asignación de roles a través de los pools de identidad en Cognito es un proceso que se realiza mediante comandos específicos en la CLI de AWS. Este mecanismo permite especificar, de manera explícita, los roles que deben ser asumidos por los usuarios no autenticados y autenticados. El comando básico para esta operación es el siguiente:

aws cognito-identity set-identity-pool-roles \
    --identity-pool-id <identity_pool_id> \
    --roles unauthenticated=<role ARN>,authenticated=<role ARN>

Este comando establece los roles de IAM (Amazon Resource Name) para usuarios autenticados y no autenticados, vinculándolos directamente con un Identity Pool específico. La flexibilidad de este comando permite una asignación precisa de políticas y permisos basados en el estado de autenticación del usuario, facilitando la implementación de controles de seguridad detallados.

Obtención de Credenciales

Para interactuar con los recursos de AWS, los usuarios necesitan obtener credenciales que les permitan asumir roles específicos. AWS Cognito facilita este proceso a través de dos comandos clave:

  1. Obtención de un ID de Identidad: Este paso inicial obtiene un identificador único para el usuario dentro del Identity Pool, lo que es fundamental para la asignación de credenciales.

aws cognito-identity get-id --identity-pool-id "<identity_pool_id>"
  1. Obtención de Credenciales para la Identidad: Una vez obtenido el ID de identidad, se pueden solicitar las credenciales necesarias para interactuar con los servicios de AWS, asumiendo el rol designado.

aws cognito-identity get-credentials-for-identity --identity-id "<identity_id>"

Estos comandos, ejecutados en secuencia, permiten a los usuarios acceder a los recursos de AWS con los permisos específicos asignados a través de sus roles.

Habilitación de Usuarios No Autenticados

En casos donde una aplicación Cognito no tiene habilitados usuarios no autenticados, es necesario modificar el Identity Pool para permitir este tipo de usuarios. Este ajuste requiere permisos adicionales, en particular cognito-identity:UpdateIdentityPool, que autoriza la actualización de la configuración del Identity Pool para incluir usuarios no autenticados.

Impacto Potencial de la Asignación de Roles

La capacidad de asignar roles dinámicamente a usuarios autenticados y no autenticados presenta tanto oportunidades como riesgos. La asignación inadecuada de roles o la configuración incorrecta de permisos puede conducir a una escalada de privilegios, donde usuarios no autorizados obtienen acceso a recursos o funcionalidades restringidas. Este escenario subraya la importancia de una gestión cuidadosa de los roles y permisos dentro de AWS Cognito, asegurando que solo se otorguen los privilegios necesarios para las operaciones intencionadas.

Última actualización