# AWS - ECS Enum {{#include ../../../banners/hacktricks-training.md}} ## ECS ### Información Básica Amazon **Elastic Container Services** o ECS proporciona una plataforma para **alojar aplicaciones en contenedores en la nube**. ECS tiene dos métodos de **despliegue**, tipo de instancia **EC2** y una opción **sin servidor**, **Fargate**. El servicio **hace que ejecutar contenedores en la nube sea muy fácil y sin complicaciones**. ECS opera utilizando los siguientes tres bloques de construcción: **Clusters**, **Services** y **Task Definitions**. - **Clusters** son **grupos de contenedores** que se están ejecutando en la nube. Como se mencionó anteriormente, hay dos tipos de lanzamiento para contenedores, EC2 y Fargate. AWS define el tipo de lanzamiento **EC2** como permitir a los clientes “ejecutar \[sus] aplicaciones en contenedores en un clúster de instancias de Amazon EC2 que \[ellos] **gestionan**”. **Fargate** es similar y se define como “\[permitiendo] ejecutar sus aplicaciones en contenedores **sin necesidad de aprovisionar y gestionar** la infraestructura de backend”. - **Services** se crean dentro de un clúster y son responsables de **ejecutar las tareas**. Dentro de una definición de servicio **se define el número de tareas a ejecutar, escalado automático, proveedor de capacidad (Fargate/EC2/External),** información de **red** como VPC, subredes y grupos de seguridad. - Hay **2 tipos de aplicaciones**: - **Service**: Un grupo de tareas que maneja un trabajo computacional de larga duración que puede ser detenido y reiniciado. Por ejemplo, una aplicación web. - **Task**: Una tarea independiente que se ejecuta y termina. Por ejemplo, un trabajo por lotes. - Entre las aplicaciones de servicio, hay **2 tipos de programadores de servicio**: - [**REPLICA**](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html): La estrategia de programación de réplicas coloca y **mantiene el número deseado** de tareas en su clúster. Si por alguna razón una tarea se apaga, se lanza una nueva en el mismo o diferente nodo. - [**DAEMON**](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html): Despliega exactamente una tarea en cada instancia de contenedor activa que tenga los requisitos necesarios. No es necesario especificar un número deseado de tareas, una estrategia de colocación de tareas, o usar políticas de escalado automático de servicios. - **Task Definitions** son responsables de **definir qué contenedores se ejecutarán** y los varios parámetros que se configurarán con los contenedores, como **mapeos de puertos** con el host, **variables de entorno**, **entrypoint** de Docker... - ¡Verifique **variables de entorno para información sensible**! ### Datos Sensibles en las Definiciones de Tareas Las definiciones de tareas son responsables de **configurar los contenedores reales que se ejecutarán en ECS**. Dado que las definiciones de tareas definen cómo se ejecutarán los contenedores, se puede encontrar una gran cantidad de información dentro. Pacu puede enumerar ECS (list-clusters, list-container-instances, list-services, list-task-definitions), también puede volcar definiciones de tareas. ### Enumeración ```bash # Clusters info aws ecs list-clusters aws ecs describe-clusters --clusters # Container instances ## An Amazon ECS container instance is an Amazon EC2 instance that is running the Amazon ECS container agent and has been registered into an Amazon ECS cluster. aws ecs list-container-instances --cluster aws ecs describe-container-instances --cluster --container-instances # Services info aws ecs list-services --cluster aws ecs describe-services --cluster --services aws ecs describe-task-sets --cluster --service # Task definitions aws ecs list-task-definition-families aws ecs list-task-definitions aws ecs list-tasks --cluster aws ecs describe-tasks --cluster --tasks ## Look for env vars and secrets used from the task definition aws ecs describe-task-definition --task-definition : ``` ### Acceso No Autenticado {{#ref}} ../aws-unauthenticated-enum-access/aws-ecs-unauthenticated-enum.md {{#endref}} ### Escalación de Privilegios En la siguiente página puedes verificar cómo **abusar de los permisos de ECS para escalar privilegios**: {{#ref}} ../aws-privilege-escalation/aws-ecs-privesc.md {{#endref}} ### Post Explotación {{#ref}} ../aws-post-exploitation/aws-ecs-post-exploitation.md {{#endref}} ### Persistencia {{#ref}} ../aws-persistence/aws-ecs-persistence.md {{#endref}} {{#include ../../../banners/hacktricks-training.md}}