AWS - ECS Enum

Tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Leer & oefen Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks

ECS

Basic Information

Amazon Elastic Container Services or ECS bied ’n platform om gekontaineriseerde toepassings in the cloud te host. ECS het twee deployment metodes, EC2 instansietipe en ’n serverless opsie, Fargate. Die diens maak dit baie maklik en pynloos om containers in the cloud te laat loop.

ECS werk met die volgende drie boublokke: Clusters, Services, en Task Definitions.

  • Clusters is groepe containers wat in the cloud loop. Soos vroeër genoem, is daar twee launch types vir containers, EC2 en Fargate. AWS definieer die EC2 launch type as dat dit kliënte toelaat “om [their] containerized applications on a cluster of Amazon EC2 instances that [they] manage” te laat loop. Fargate is soortgelyk en word gedefinieer as “[allowing] you to run your containerized applications without the need to provision and manage the backend infrastructure”.
  • Services word binne ’n cluster geskep en is verantwoordelik vir running the tasks. Binne ’n service-definisie definieer jy die aantal tasks om te run, auto scaling, capacity provider (Fargate/EC2/External), networking inligting soos VPC’s, subnets, en security groups.
  • Daar is 2 tipes toepassings:
  • Service: ’n Groep tasks wat ’n langlopende rekenwerk hanteer wat gestop en weer begin kan word. Byvoorbeeld, ’n webtoepassing.
  • Task: ’n selfstandige task wat loop en beëindig word. Byvoorbeeld, ’n batch job.
  • Onder die service-toepassings is daar 2 tipes service schedulers:
  • REPLICA: Die replica scheduling strategy plaas en handhaaf die verlangde aantal tasks oor jou cluster. As ’n task om een of ander rede afgeskakel word, word ’n nuwe een in dieselfde of ’n ander node geloods.
  • DAEMON: Ontplooi presies een task op elke aktiewe container instance wat die nodige vereistes het. Daar is geen behoefte om ’n verlangde aantal tasks, ’n task placement strategy, of Service Auto Scaling policies te spesifiseer nie.
  • Task Definitions is verantwoordelik vir die definisie van watter containers sal loop en die verskeie parameters wat met die containers gekonfigureer sal word, soos port mappings met die host, env variables, Docker entrypoint
  • Kontroleer env variables vir sensitiewe inligting!

Sensitiewe Data In Task Definitions

Task definitions is verantwoordelik vir die konfigurasie van die werklike containers wat in ECS sal loop. Aangesien task definitions definieer hoe containers sal loop, kan ’n oorvloed inligting daarin gevind word.

Pacu kan ECS enum (list-clusters, list-container-instances, list-services, list-task-definitions), dit kan ook task definitions dump.

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>

Op-gas Enumerasie via die ECS Agent State DB (agent.db)

Wanneer jy shell access op ’n ECS container instance het, of jy het uit ’n container ge-escape met ’n host bind-mount van /var/lib/ecs (’n algemene misconfiguratie wanneer tasks privileged loop of met volumesFrom wat die host data dir blootstel), laat die ECS agent agent.db op disk agter wat gelees kan word sonder enige AWS API call, sonder enige IAM permission, en sonder om CloudTrail te trigger.

/var/lib/ecs/data/agent.db

(of, wanneer dit vanaf ’n container gelees word wat die host gemonteer het by /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

Wat jy kan herwin

Afhangend van die cluster se ouderdom en workload churn, lewer strings teenoor agent.db tipies:

  • Task and execution IAM role ARNs (taskRoleArn, executionRoleArn) vir elke task wat die agent al uitgevoer het — nuttige teikens vir credential retrieval via the task metadata endpoint (169.254.170.2).
  • Full task definitions — image URIs (dikwels private ECR repos), command, entrypoint, port mappings, mount points, log configuration, en plaintext environment variables wat dikwels database URLs, API tokens, en third-party secrets insluit.
  • Secrets referencessecretOptions en secrets blocks wat na SSM Parameter Store paths en Secrets Manager ARNs wys (groot pivot list).
  • Container instance ARN, cluster ARN, and registration token — bevestig die cluster name en account/region konteks sonder enige API call.
  • ENI metadata — private IPs, MAC addresses, subnet IDs, en security group IDs toegeken in awsvpc mode (nuttig vir lateral movement beplanning).
  • Image pull credentials — wanneer die task definition repositoryCredentials gebruik, is die verwysde Secrets Manager ARN hier; op ouer agents kan private-registry auth blobs (ECS_ENGINE_AUTH_DATA) ook gecached wees.
  • Recently-stopped task containers — insluitend names, IDs, exit codes en labels, soms lank nadat die ooreenstemmende aws ecs describe-tasks call hulle uit die API response verwyder het.

Unauthenticated Access

AWS - ECS Unauthenticated Enum

Privesc

In die volgende page kan jy kyk hoe om ECS permissions te abuse om privileges te escalate:

AWS - ECS Privesc

Post Exploitation

AWS - ECS Post Exploitation

Persistence

AWS - ECS Persistence

Tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Leer & oefen Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Ondersteun HackTricks