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

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 secretOptions e secrets che 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-tasks li ha rimossi dalla risposta API.

Unauthenticated Access

AWS - ECS Unauthenticated Enum

Privesc

Nella pagina seguente puoi vedere come abuse ECS permissions to escalate privileges:

AWS - ECS Privesc

Post Exploitation

AWS - ECS Post Exploitation

Persistence

AWS - ECS 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