AWS - ECS Enum
Tip
Impara & pratica AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Impara & pratica GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Impara & pratica Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Sostieni HackTricks
- Controlla i subscription plans!
- Unisciti al đŹ Discord group o al telegram group o seguici su Twitter đŚ @hacktricks_live.
- Condividi hacking tricks inviando PRs ai HackTricks e HackTricks Cloud github repos.
ECS
Informazioni di base
Amazon Elastic Container Services o ECS fornisce una piattaforma per ospitare applicazioni containerizzate nel cloud. ECS ha due metodi di deployment, il tipo di istanza EC2 e unâopzione serverless, Fargate. Il servizio rende lâesecuzione dei container nel cloud molto facile e senza problemi.
ECS opera usando i seguenti tre blocchi fondamentali: Clusters, Services e Task Definitions.
- Clusters sono gruppi di container che stanno girando nel cloud. Come detto in precedenza, ci sono due launch types per i container, EC2 e Fargate. AWS definisce il launch type EC2 come quello che permette ai clienti âdi eseguire [le loro] applicazioni containerizzate su un cluster di istanze Amazon EC2 che [loro] gestisconoâ. Fargate è simile ed è definito come â[che consente] di eseguire le tue applicazioni containerizzate senza la necessitĂ di provisionare e gestire lâinfrastruttura backendâ.
- Services vengono creati allâinterno di un cluster e sono responsabili di eseguire i tasks. Allâinterno di una definizione di service definisci il numero di tasks da eseguire, auto scaling, capacity provider (Fargate/EC2/External), informazioni di networking come VPC, subnet e security groups.
- Ci sono 2 tipi di applicazioni:
- Service: Un gruppo di tasks che gestisce un carico di lavoro computazionale a lunga durata che può essere fermato e riavviato. Per esempio, unâapplicazione web.
- Task: Un task autonomo che viene eseguito e termina. Per esempio, un batch job.
- Tra le applicazioni di service, ci sono 2 tipi di service schedulers:
- REPLICA: La strategia di scheduling replica posiziona e mantiene il numero desiderato di tasks nel tuo cluster. Se per qualche motivo un task si arresta, ne viene avviato uno nuovo nello stesso nodo o in un nodo diverso.
- DAEMON: Distribuisce esattamente un task su ogni container instance attiva che abbia i requisiti necessari. Non è necessario specificare un numero desiderato di tasks, una task placement strategy o usare le policy di Service Auto Scaling.
- Task Definitions sono responsabili di definire quali container verranno eseguiti e i vari parametri che saranno configurati con i container, come port mappings con lâhost, env variables, Docker entrypointâŚ
- Controlla le env variables per info sensibili!
Dati sensibili nelle Task Definitions
Le task definitions sono responsabili di configurare i container effettivi che verranno eseguiti in ECS. PoichÊ le task definitions definiscono come i container verranno eseguiti, al loro interno si può trovare una grande quantità di informazioni.
Pacu può enumerare ECS (list-clusters, list-container-instances, list-services, list-task-definitions), può anche fare il dump delle 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>
Enumerazione On-Host tramite il database di stato dellâECS Agent (agent.db)
Quando hai shell access su un ECS container instance , oppure hai escaped da un container con un host bind-mount di /var/lib/ecs (una comune misconfiguration quando i task girano privileged o con volumesFrom che espone la directory dati dellâhost), lâECS agent lascia agent.db su disco che può essere letto senza alcuna chiamata alle AWS API, senza alcun permesso IAM, e senza attivare CloudTrail.
/var/lib/ecs/data/agent.db
(o, quando si legge da un container che ha lâhost montato su /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
Cosa puoi recuperare
A seconda dellâetĂ del cluster e del churn del workload, strings su agent.db in genere restituisce:
- ARN delle IAM role di task ed execution (
taskRoleArn,executionRoleArn) per ogni task eseguito dallâagent â target utili per credential retrieval via the task metadata endpoint (169.254.170.2). - Definizioni complete dei task â image URI (spesso repository ECR private), command, entrypoint, port mappings, mount points, log configuration e variabili dâambiente in plaintext che spesso includono database URL, API token e secret di terze parti.
- Riferimenti ai secret â blocchi
secretOptionsesecretsche puntano a path di SSM Parameter Store e ARN di Secrets Manager (ottima lista di pivot). - ARN dellâcontainer instance, ARN del cluster e registration token â conferma il nome del cluster e il contesto account/region senza alcuna API call.
- Metadati ENI â IP privati, indirizzi MAC, subnet ID e security group ID assegnati in modalitĂ
awsvpc(utili per pianificare lateral movement). - Credenziali di image pull â quando la definizione del task usa
repositoryCredentials, lâARN di Secrets Manager referenziato è qui; sugli agent piĂš vecchi anche i blob di auth per private registry (ECS_ENGINE_AUTH_DATA) possono essere cached. - Container di task recentemente fermati â inclusi nomi, ID, exit code e label, a volte molto dopo che la corrispondente chiamata
aws ecs describe-tasksli ha rimossi dalla risposta API.
Unauthenticated Access
AWS - ECS Unauthenticated Enum
Privesc
Nella pagina seguente puoi vedere come abuse ECS permissions to escalate privileges:
Post Exploitation
Persistence
Tip
Impara & pratica AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Impara & pratica GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Impara & pratica Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Sostieni HackTricks
- Controlla i subscription plans!
- Unisciti al đŹ Discord group o al telegram group o seguici su Twitter đŚ @hacktricks_live.
- Condividi hacking tricks inviando PRs ai HackTricks e HackTricks Cloud github repos.
HackTricks Cloud

