# AWS - ECS Post Explotación {{#include ../../../banners/hacktricks-training.md}} ## ECS Para más información consulta: {{#ref}} ../aws-services/aws-ecs-enum.md {{#endref}} ### Roles IAM de Host En ECS, un **rol IAM puede ser asignado a la tarea** que se ejecuta dentro del contenedor. **Si** la tarea se ejecuta dentro de una **instancia EC2**, la **instancia EC2** tendrá **otro rol IAM** adjunto.\ Lo que significa que si logras **comprometer** una instancia ECS, puedes potencialmente **obtener el rol IAM asociado al ECR y a la instancia EC2**. Para más información sobre cómo obtener esas credenciales consulta: {{#ref}} https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html {{#endref}} > [!CAUTION] > Ten en cuenta que si la instancia EC2 está aplicando IMDSv2, [**según la documentación**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-v2-how-it-works.html), la **respuesta de la solicitud PUT** tendrá un **límite de salto de 1**, lo que hace imposible acceder a los metadatos de EC2 desde un contenedor dentro de la instancia EC2. ### Privesc a nodo para robar credenciales y secretos de otros contenedores Además, EC2 utiliza docker para ejecutar tareas de ECS, así que si puedes escapar al nodo o **acceder al socket de docker**, puedes **verificar** qué **otros contenedores** se están ejecutando, e incluso **entrar en ellos** y **robar sus roles IAM** adjuntos. #### Haciendo que los contenedores se ejecuten en el host actual Además, el **rol de la instancia EC2** generalmente tendrá suficientes **permisos** para **actualizar el estado de la instancia de contenedor** de las instancias EC2 que se utilizan como nodos dentro del clúster. Un atacante podría modificar el **estado de una instancia a DRAINING**, luego ECS **eliminará todas las tareas de ella** y las que se están ejecutando como **REPLICA** serán **ejecutadas en una instancia diferente,** potencialmente dentro de la **instancia del atacante** para que pueda **robar sus roles IAM** y potencial información sensible desde dentro del contenedor. ```bash aws ecs update-container-instances-state \ --cluster --status DRAINING --container-instances ``` La misma técnica se puede realizar **deregistrando la instancia EC2 del clúster**. Esto es potencialmente menos sigiloso, pero **forzará a que las tareas se ejecuten en otras instancias:** ```bash aws ecs deregister-container-instance \ --cluster --container-instance --force ``` Una técnica final para forzar la reejecución de tareas es indicando a ECS que el **tarea o contenedor fue detenido**. Hay 3 APIs potenciales para hacer esto: ```bash # Needs: ecs:SubmitTaskStateChange aws ecs submit-task-state-change --cluster \ --status STOPPED --reason "anything" --containers [...] # Needs: ecs:SubmitContainerStateChange aws ecs submit-container-state-change ... # Needs: ecs:SubmitAttachmentStateChanges aws ecs submit-attachment-state-changes ... ``` ### Robar información sensible de contenedores ECR La instancia EC2 probablemente también tendrá el permiso `ecr:GetAuthorizationToken` que le permite **descargar imágenes** (podrías buscar información sensible en ellas). {{#include ../../../banners/hacktricks-training.md}}