AWS - ECS Enum
Tip
Aprenda e pratique AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Apoie o HackTricks
- Check the subscription plans!
- Participe do 💬 Discord group ou do telegram group ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe hacking tricks enviando PRs para os HackTricks e HackTricks Cloud github repos.
ECS
Basic Information
Amazon Elastic Container Services ou ECS fornece uma plataforma para hospedar aplicações containerized na cloud. ECS tem dois métodos de deployment, o tipo de instância EC2 e uma opção serverless, Fargate. O serviço torna executar containers na cloud muito fácil e sem dor.
ECS opera usando os seguintes três blocos de construção: Clusters, Services e Task Definitions.
- Clusters são grupos de containers que estão rodando na cloud. Como mencionado anteriormente, existem dois launch types para containers, EC2 e Fargate. A AWS define o launch type EC2 como permitindo que os clientes “executem [suas] aplicações containerized em um cluster de instâncias Amazon EC2 que [eles] manage”. Fargate é similar e é definido como “[permitindo] que você execute suas aplicações containerized sem a necessidade de provisionar e manage a infraestrutura de backend”.
- Services são criados dentro de um cluster e responsáveis por executar as tasks. Dentro de uma definição de service, você define o número de tasks para executar, auto scaling, capacity provider (Fargate/EC2/External), informações de networking como VPC’s, subnets e security groups.
- Existem 2 tipos de applications:
- Service: Um grupo de tasks lidando com um trabalho de computação de longa duração que pode ser parado e reiniciado. Por exemplo, uma web application.
- Task: Uma task independente que executa e termina. Por exemplo, um batch job.
- Entre as service applications, existem 2 tipos de service schedulers:
- REPLICA: A estratégia de scheduling replica coloca e mantém o número desejado de tasks em todo o seu cluster. Se por algum motivo uma task for encerrada, uma nova é lançada no mesmo ou em outro node.
- DAEMON: Faz deploy de exatamente uma task em cada container instance ativa que tenha os requisitos necessários. Não há necessidade de especificar um número desejado de tasks, uma task placement strategy ou usar políticas de Service Auto Scaling.
- Task Definitions são responsáveis por definir quais containers vão rodar e os vários parâmetros que serão configurados com os containers, como port mappings com o host, env variables, Docker entrypoint…
- Verifique env variables para sensitive info!
Sensitive Data In Task Definitions
Task definitions são responsáveis por configurar os containers reais que estarão rodando no ECS. Como as task definitions definem como os containers vão rodar, uma grande quantidade de informações pode ser encontrada nelas.
Pacu pode enumerar ECS (list-clusters, list-container-instances, list-services, list-task-definitions), também pode fazer dump de 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>
Enumeração no Host via o ECS Agent State DB (agent.db)
Quando você tem shell access em uma ECS container instance , ou você escapeu de um container com um host bind-mount de /var/lib/ecs (uma misconfiguration comum quando tasks rodam privileged ou com volumesFrom expondo o host data dir), o ECS agent deixa agent.db em disco que pode ser lido sem nenhuma AWS API call, sem nenhuma IAM permission, e sem disparar CloudTrail.
/var/lib/ecs/data/agent.db
(ou, ao ler de um container que tem o host montado em /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
O que você pode recuperar
Dependendo da idade do cluster e da rotatividade da workload, strings em agent.db normalmente retorna:
- ARNs de IAM role da task e da execução (
taskRoleArn,executionRoleArn) para toda task que o agent executou — alvos úteis para credential retrieval via the task metadata endpoint (169.254.170.2). - Definições completas de task — image URIs (muitas vezes repositórios privados do ECR), command, entrypoint, port mappings, mount points, log configuration e variáveis de ambiente em plaintext que frequentemente incluem database URLs, API tokens e secrets de terceiros.
- Referências a secrets — blocos
secretOptionsesecretsapontando para paths do SSM Parameter Store e ARNs do Secrets Manager (ótima lista para pivot). - ARN da container instance, ARN do cluster e registration token — confirma o nome do cluster e o contexto de account/region sem nenhuma chamada de API.
- Metadados da ENI — IPs privados, MAC addresses, subnet IDs e security group IDs atribuídos em modo
awsvpc(útil para planejamento de movement lateral). - Credenciais de image pull — quando a task definition usa
repositoryCredentials, o ARN do Secrets Manager referenciado fica aqui; em agents antigos, blobs de auth de private-registry (ECS_ENGINE_AUTH_DATA) também podem estar em cache. - Containers de tasks recentemente paradas — incluindo nomes, IDs, exit codes e labels, às vezes muito tempo depois de a chamada correspondente
aws ecs describe-tasksjá ter expurgado esses dados da resposta da API.
Unauthenticated Access
AWS - ECS Unauthenticated Enum
Privesc
Na página seguinte você pode ver como abusar das permissões do ECS para escalar privilégios:
Post Exploitation
Persistence
Tip
Aprenda e pratique AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Apoie o HackTricks
- Check the subscription plans!
- Participe do 💬 Discord group ou do telegram group ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe hacking tricks enviando PRs para os HackTricks e HackTricks Cloud github repos.
HackTricks Cloud

