Translated ['', 'src/pentesting-cloud/aws-security/aws-services/aws-ecs-

This commit is contained in:
Translator
2026-05-03 08:46:57 +00:00
parent e59c271ad4
commit d5faceb04c
@@ -4,30 +4,30 @@
## ECS
### Basiese Inligting
### Basic Information
Amazon **Elastic Container Services** of ECS bied 'n platform om **gecontaineriseerde toepassings in die wolk te huisves**. ECS het twee **ontplooiing** metodes, **EC2** instansie tipe en 'n **serverless** opsie, **Fargate**. Die diens **maak dit baie maklik en probleemloos om houers in die wolk te laat loop**.
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**, **Dienste**, en **Taak Definisies**.
ECS werk met die volgende drie boublokke: **Clusters**, **Services**, en **Task Definitions**.
- **Clusters** is **groepe van houers** wat in die wolk loop. Soos voorheen genoem, is daar twee lanseringstipes vir houers, EC2 en Fargate. AWS definieer die **EC2** lanseringstype as wat kliënte toelaat om \[hul] gecontaineriseerde toepassings op 'n kluster van Amazon EC2 instansies wat \[hul] **bestuur**” te laat loop. **Fargate** is soortgelyk en word gedefinieer as “\[wat] jou toelaat om jou gecontaineriseerde toepassings **sonder die behoefte om** die agtergrondinfrastruktuur te voorsien en te bestuur”.
- **Dienste** word binne 'n kluster geskep en is verantwoordelik vir **die uitvoering van die take**. Binne 'n diensdefinisie **definieer jy die aantal take om te loop, outo-skaal, kapasiteitsverskaffer (Fargate/EC2/Buitenshuise),** **netwerk** inligting soos VPCs, subnetwerke, en sekuriteitsgroepe.
- **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 VPCs, subnets, en security groups.
- Daar is **2 tipes toepassings**:
- **Diens**: 'n Groep take wat 'n langlopende rekenaarwerk hanteer wat gestop en herbegin kan word. Byvoorbeeld, 'n webtoepassing.
- **Taak**: 'n Standalone taak wat loop en beëindig. Byvoorbeeld, 'n batch werk.
- Onder die diens toepassings, is daar **2 tipes diens skeduleerders**:
- [**REPLICA**](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html): Die replika skeduleringstrategie plaas en **onderhou die gewenste aantal** take oor jou kluster. As om een of ander rede 'n taak afsluit, word 'n nuwe een in dieselfde of 'n ander node gelanseer.
- [**DAEMON**](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html): Ontplooi presies een taak op elke aktiewe houerinstansie wat die nodige vereistes het. Daar is geen behoefte om 'n gewenste aantal take, 'n taak plasingstrategie, of diens outo-skaalbeleide te spesifiseer nie.
- **Taak Definisies** is verantwoordelik vir **die definisie van watter houers sal loop** en die verskillende parameters wat saam met die houers geconfigureer sal word soos **poorttoewysings** met die gasheer, **omgewing veranderlikes**, Docker **entrypoint**...
- Kyk na **omgewing veranderlikes vir sensitiewe inligting**!
- **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**](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html): 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**](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html): 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 Gegewens In Taak Definisies
### Sensitiewe Data In Task Definitions
Taak definisies is verantwoordelik vir **die konfigurasie van die werklike houers wat in ECS sal loop**. Aangesien taak definisies definieer hoe houers sal loop, kan 'n oorvloed van inligting daarin gevind word.
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 opnoem (lys-klusters, lys-houer-instansies, lys-dienste, lys-taak-definisies), dit kan ook taak definisies dump.
Pacu kan ECS enum (list-clusters, list-container-instances, list-services, list-task-definitions), dit kan ook task definitions dump.
### Opname
### Enumeration
```bash
# Clusters info
aws ecs list-clusters
@@ -51,27 +51,60 @@ 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>
```
### Ongeauthentiseerde Toegang
### 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`).
```bash
# 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](https://cloud.hacktricks.wiki/en/pentesting-cloud/aws-security/aws-services/aws-ecs-enum.html) (`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 references** — `secretOptions` 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
{{#ref}}
../aws-unauthenticated-enum-access/aws-ecs-unauthenticated-enum/README.md
{{#endref}}
### Privilege Escalation
### Privesc
In die volgende bladsy kan jy kyk hoe om **ECS-toestemmings te misbruik om voorregte te verhoog**:
In die volgende page kan jy kyk hoe om ECS permissions te **abuse om privileges te escalate**:
{{#ref}}
../aws-privilege-escalation/aws-ecs-privesc/README.md
{{#endref}}
### Post Exploitatie
### Post Exploitation
{{#ref}}
../aws-post-exploitation/aws-ecs-post-exploitation/README.md
{{#endref}}
### Volharding
### Persistence
{{#ref}}
../aws-persistence/aws-ecs-persistence/README.md