AWS - ECS Enum
Tip
Aprende y practica AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Consulta los subscription plans!
- Únete al 💬 Discord group o al telegram group o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud github repos.
ECS
Basic Information
Amazon Elastic Container Services o ECS proporciona una plataforma para hostear aplicaciones containerizadas en la cloud. ECS tiene dos métodos de deployment, el tipo de instancia EC2 y una opción serverless, Fargate. El servicio hace que ejecutar containers en la cloud sea muy fácil y sin dolor.
ECS opera usando los siguientes tres bloques básicos: Clusters, Services y Task Definitions.
- Clusters son grupos de containers que se ejecutan en la cloud. Como se mencionó anteriormente, hay dos launch types para containers, EC2 y Fargate. AWS define el launch type EC2 como permitir a los clientes “ejecutar [sus] aplicaciones containerizadas en un cluster de Amazon EC2 instances que [ellos] manage”. Fargate es similar y se define como “[permitiéndote] ejecutar tus aplicaciones containerizadas sin la necesidad de aprovisionar y manage la infraestructura backend”.
- Services se crean dentro de un cluster y son responsables de ejecutar las tasks. Dentro de una definición de service defines el número de tasks a ejecutar, auto scaling, capacity provider (Fargate/EC2/External), información de networking como VPC’s, subnets y security groups.
- Hay 2 tipos de aplicaciones:
- Service: Un grupo de tasks que maneja un trabajo de computación de larga duración que puede detenerse y reiniciarse. Por ejemplo, una web application.
- Task: Una tarea independiente que se ejecuta y termina. Por ejemplo, un batch job.
- Entre las aplicaciones de service, hay 2 tipos de service schedulers:
- REPLICA: La estrategia de scheduling replica coloca y mantiene el número deseado de tasks en todo tu cluster. Si por alguna razón una task se apaga, se lanza una nueva en el mismo o en otro node.
- DAEMON: Despliega exactamente una task en cada active container instance que tenga los requisitos necesarios. No es necesario especificar un número deseado de tasks, una task placement strategy, ni usar políticas de Service Auto Scaling.
- Task Definitions son responsables de definir qué containers se ejecutarán y los diversos parámetros que se configurarán con los containers, como port mappings con el host, env variables, Docker entrypoint…
- ¡Revisa las env variables en busca de info sensible!
Sensitive Data In Task Definitions
Las task definitions son responsables de configurar los containers reales que se ejecutarán en ECS. Como las task definitions definen cómo se ejecutarán los containers, se puede encontrar una gran cantidad de información dentro de ellas.
Pacu puede enumerar ECS (list-clusters, list-container-instances, list-services, list-task-definitions), también puede volcar task definitions.
Enumeration
# Clusters info
aws ecs list-clusters
aws ecs describe-clusters --clusters <cluster>
# 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 <cluster>
aws ecs describe-container-instances --cluster <cluster> --container-instances <container_instance_arn>
# Services info
aws ecs list-services --cluster <cluster>
aws ecs describe-services --cluster <cluster> --services <services>
aws ecs describe-task-sets --cluster <cluster> --service <service>
# Task definitions
aws ecs list-task-definition-families
aws ecs list-task-definitions
aws ecs list-tasks --cluster <cluster>
aws ecs describe-tasks --cluster <cluster> --tasks <tasks>
## Look for env vars and secrets used from the task definition
aws ecs describe-task-definition --task-definition <TASK_NAME>:<VERSION>
Enumeración en el host mediante la ECS Agent State DB (agent.db)
Cuando tienes shell access en una ECS container instance , o has escapado de un container con un host bind-mount de /var/lib/ecs (una misconfiguration común cuando las tasks se ejecutan privileged o con volumesFrom exponiendo el host data dir), el ECS agent deja agent.db en disco, que puede leerse sin ninguna AWS API call, sin ningún IAM permission, y sin activar CloudTrail.
/var/lib/ecs/data/agent.db
(o, al leer desde un contenedor que tiene el host montado en /host, /host/var/lib/ecs/data/agent.db).
# Most useful one-liner — dumps everything readable
strings /var/lib/ecs/data/agent.db
# From inside a container with the host mounted at /host
strings /host/var/lib/ecs/data/agent.db
# Filter for the highest-value artefacts
strings /var/lib/ecs/data/agent.db | grep -aE 'arn:aws:|AKIA|ASIA|"secret|password|TOKEN|credentials|taskRoleArn|executionRoleArn'
# Save the outcome from strings for offline analysis
strings /host/var/lib/ecs/data/agent.db >> /tmp/agent.txt
tr -s '{}[],:"\\' '\n' < /tmp/agent.txt | sed 's/^[[:space:]]*//; s/[[:space:]]*$//' | awk 'NF && length($0)>2 && !/^[0-9.]+$/' | sort -u
Lo que puedes recuperar
Dependiendo de la antigüedad del cluster y de la rotación de cargas de trabajo, strings contra agent.db normalmente devuelve:
- ARNs de roles IAM de task y ejecución (
taskRoleArn,executionRoleArn) para cada task que el agent ha ejecutado — objetivos útiles para credential retrieval via the task metadata endpoint (169.254.170.2). - Task definitions completas — URIs de imágenes (a menudo repos privados de ECR), command, entrypoint, port mappings, mount points, configuración de logs y variables de entorno en texto plano que con frecuencia incluyen URLs de bases de datos, API tokens y secretos de terceros.
- Referencias a secrets — bloques
secretOptionsysecretsque apuntan a rutas de SSM Parameter Store y ARNs de Secrets Manager (gran lista de pivot). - ARN de container instance, ARN de cluster y registration token — confirma el nombre del cluster y el contexto de account/region sin ninguna llamada a la API.
- Metadatos de ENI — IPs privadas, direcciones MAC, IDs de subnet y IDs de security group asignados en modo
awsvpc(útil para planificar movimiento lateral). - Credenciales de image pull — cuando la task definition usa
repositoryCredentials, el ARN de Secrets Manager referenciado está aquí; en agents antiguos, los blobs de autenticación de private-registry (ECS_ENGINE_AUTH_DATA) también pueden estar en caché. - Contenedores de tasks detenidas recientemente — incluyendo nombres, IDs, exit codes y labels, a veces mucho después de que la llamada correspondiente
aws ecs describe-taskshaya quedado fuera de la respuesta de la API.
Unauthenticated Access
AWS - ECS Unauthenticated Enum
Privesc
En la siguiente página puedes ver cómo abuse ECS permissions to escalate privileges:
Post Exploitation
Persistence
Tip
Aprende y practica AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Consulta los subscription plans!
- Únete al 💬 Discord group o al telegram group o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud github repos.
HackTricks Cloud

