AWS - ECS Enum
Tip
Apprenez & pratiquez AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Soutenez HackTricks
- Consultez les subscription plans!
- Rejoignez le đŹ Discord group ou le telegram group ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des hacking tricks en soumettant des PRs aux HackTricks et HackTricks Cloud github repos.
ECS
Basic Information
Amazon Elastic Container Services ou ECS fournit une plateforme pour hĂ©berger des applications conteneurisĂ©es dans le cloud. ECS a deux mĂ©thodes de dĂ©ploiement, le type dâinstance EC2 et une option serverless, Fargate. Le service rend lâexĂ©cution de conteneurs dans le cloud trĂšs simple et sans douleur.
ECS fonctionne Ă lâaide des trois blocs de construction suivants : Clusters, Services, et Task Definitions.
- Les Clusters sont des groupes de conteneurs qui sâexĂ©cutent dans le cloud. Comme mentionnĂ© prĂ©cĂ©demment, il existe deux types de lancement pour les conteneurs : EC2 et Fargate. AWS dĂ©finit le type de lancement EC2 comme permettant aux clients âdâexĂ©cuter [leurs] applications conteneurisĂ©es sur un cluster dâinstances Amazon EC2 que [ils] gĂšrentâ. Fargate est similaire et est dĂ©fini comme â[vous permettant] dâexĂ©cuter vos applications conteneurisĂ©es sans avoir besoin de provisionner et gĂ©rer lâinfrastructure backendâ.
- Les Services sont créés au sein dâun cluster et sont responsables de lâexĂ©cution des tasks. Dans une dĂ©finition de service, vous dĂ©finissez le nombre de tasks Ă exĂ©cuter, lâauto scaling, le capacity provider (Fargate/EC2/External), des informations de networking telles que VPC, subnets, et security groups.
- Il y a 2 types dâapplications :
- Service : Un groupe de tasks qui gĂšre un travail de calcul de longue durĂ©e pouvant ĂȘtre arrĂȘtĂ© et redĂ©marrĂ©. Par exemple, une application web.
- Task : Une task autonome qui sâexĂ©cute puis se termine. Par exemple, un batch job.
- Parmi les applications de service, il existe 2 types de service schedulers :
- REPLICA : La stratĂ©gie de scheduling replica place et maintient le nombre souhaitĂ© de tasks Ă travers votre cluster. Si, pour une raison quelconque, une task sâarrĂȘte, une nouvelle est lancĂ©e sur le mĂȘme nĆud ou sur un nĆud diffĂ©rent.
- DAEMON : DĂ©ploie exactement une task sur chaque instance de conteneur active qui possĂšde les exigences nĂ©cessaires. Il nâest pas nĂ©cessaire de spĂ©cifier un nombre souhaitĂ© de tasks, une stratĂ©gie de placement des tasks, ni dâutiliser des politiques Service Auto Scaling.
- Les Task Definitions sont responsables de dĂ©finir quels conteneurs vont sâexĂ©cuter et les diffĂ©rents paramĂštres qui seront configurĂ©s avec les conteneurs, tels que les port mappings avec lâhĂŽte, les env variables, le Docker entrypointâŠ
- Vérifiez les env variables pour des infos sensibles !
Sensitive Data In Task Definitions
Les task definitions sont responsables de configurer les conteneurs rĂ©els qui vont sâexĂ©cuter dans ECS. Puisque les task definitions dĂ©finissent comment les conteneurs vont sâexĂ©cuter, une multitude dâinformations peut sây trouver.
Pacu peut énumérer ECS (list-clusters, list-container-instances, list-services, list-task-definitions), il peut aussi dumper les 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>
ĂnumĂ©ration sur lâhĂŽte via la base de donnĂ©es dâĂ©tat de lâECS Agent (agent.db)
Lorsque vous avez un accĂšs shell sur une instance de conteneur ECS , ou que vous avez Ă©chappĂ© Ă un conteneur avec un bind-mount de lâhĂŽte de /var/lib/ecs (une mauvaise configuration courante lorsque les tasks sâexĂ©cutent en mode privilĂ©giĂ© ou avec volumesFrom exposant le rĂ©pertoire de donnĂ©es de lâhĂŽte), lâagent ECS laisse agent.db sur le disque, qui peut ĂȘtre lu sans aucun appel AWS API, sans aucune permission IAM, et sans dĂ©clencher CloudTrail.
/var/lib/ecs/data/agent.db
(ou, lors de la lecture depuis un container qui a le host monté sur /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
Ce que vous pouvez récupérer
Selon lâĂąge du cluster et le churn de la charge de travail, strings sur agent.db donne gĂ©nĂ©ralement :
- ARN des rĂŽles IAM de task et dâexĂ©cution (
taskRoleArn,executionRoleArn) pour chaque task que lâagent a exĂ©cutĂ©e â cibles utiles pour credential retrieval via the task metadata endpoint (169.254.170.2). - DĂ©finitions complĂštes des tasks â URI dâimages (souvent des repos ECR privĂ©s), command, entrypoint, port mappings, mount points, configuration de logs, et variables dâenvironnement en clair qui incluent frĂ©quemment des URLs de base de donnĂ©es, des tokens API et des secrets tiers.
- RĂ©fĂ©rences de secrets â blocs
secretOptionsetsecretspointant vers des chemins SSM Parameter Store et des ARN Secrets Manager (excellente liste de pivot). - ARN de container instance, ARN de cluster et token dâenregistrement â confirme le nom du cluster et le contexte account/region sans appel API.
- MĂ©tadonnĂ©es ENI â IP privĂ©es, adresses MAC, IDs de subnet et IDs de security group attribuĂ©s en mode
awsvpc(utile pour la planification du lateral movement). - Identifiants de pull dâimage â quand la task definition utilise
repositoryCredentials, lâARN Secrets Manager rĂ©fĂ©rencĂ© se trouve ici ; sur les anciens agents, les blobs dâauthentification de private-registry (ECS_ENGINE_AUTH_DATA) peuvent aussi ĂȘtre mis en cache. - Containers de tasks rĂ©cemment arrĂȘtĂ©es â y compris les noms, IDs, exit codes et labels, parfois bien aprĂšs que lâappel correspondant
aws ecs describe-tasksait expiré de la réponse API.
Unauthenticated Access
AWS - ECS Unauthenticated Enum
Privesc
In the following page you can check how to abuse ECS permissions to escalate privileges:
Post Exploitation
Persistence
Tip
Apprenez & pratiquez AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Soutenez HackTricks
- Consultez les subscription plans!
- Rejoignez le đŹ Discord group ou le telegram group ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des hacking tricks en soumettant des PRs aux HackTricks et HackTricks Cloud github repos.
HackTricks Cloud

