# AWS - ECS Enum

{{#include ../../../banners/hacktricks-training.md}}

## ECS

### Osnovne informacije

Amazon **Elastic Container Services** ili ECS pruža platformu za **hostovanje kontejnerizovanih aplikacija u oblaku**. ECS ima dva **metoda implementacije**, tip instance **EC2** i **serverless** opciju, **Fargate**. Usluga **omogućava lako i bezbolno pokretanje kontejnera u oblaku**.

ECS funkcioniše koristeći sledeće tri gradivne blokove: **Klasteri**, **Usluge** i **Definicije zadataka**.

- **Klasteri** su **grupe kontejnera** koji se pokreću u oblaku. Kao što je ranije pomenuto, postoje dva tipa pokretanja za kontejnere, EC2 i Fargate. AWS definiše **EC2** tip pokretanja kao omogućavanje kupcima “da pokreću \[svoje] kontejnerizovane aplikacije na klasteru Amazon EC2 instanci koje \[oni] **upravljaju**”. **Fargate** je sličan i definisan je kao “\[omogućava] vam da pokrećete svoje kontejnerizovane aplikacije **bez potrebe za obezbeđivanjem i upravljanjem** pozadinskom infrastrukturom”.
- **Usluge** se kreiraju unutar klastera i odgovorne su za **pokretanje zadataka**. Unutar definicije usluge **definišete broj zadataka koji će se pokrenuti, automatsko skaliranje, provajder kapaciteta (Fargate/EC2/Spoljašnji),** **informacije o umrežavanju** kao što su VPC, podmreže i sigurnosne grupe.
- Postoje **2 tipa aplikacija**:
- **Usluga**: Grupa zadataka koja se bavi dugotrajnim računski radom koji se može zaustaviti i ponovo pokrenuti. Na primer, web aplikacija.
- **Zadatak**: Samostalni zadatak koji se pokreće i završava. Na primer, batch posao.
- Među aplikacijama usluga, postoje **2 tipa planera usluga**:
- [**REPLICA**](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html): Strategija planiranja replika postavlja i **održava željeni broj** zadataka širom vašeg klastera. Ako iz nekog razloga zadatak prestane sa radom, novi se pokreće na istom ili drugom čvoru.
- [**DAEMON**](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html): Postavlja tačno jedan zadatak na svakoj aktivnoj instanci kontejnera koja ima potrebne zahteve. Nema potrebe da se specificira željeni broj zadataka, strategija postavljanja zadataka ili korišćenje politika automatskog skaliranja usluga.
- **Definicije zadataka** su odgovorne za **definisanje koji će se kontejneri pokretati** i razne parametre koji će biti konfigurisani sa kontejnerima kao što su **mapiranja portova** sa hostom, **env varijable**, Docker **entrypoint**...
- Proverite **env varijable za osetljive informacije**!

### Osetljivi podaci u definicijama zadataka

Definicije zadataka su odgovorne za **konfigurisanje stvarnih kontejnera koji će se pokretati u ECS**. Pošto definicije zadataka definišu kako će se kontejneri pokretati, mnoštvo informacija može se naći unutar njih.

Pacu može enumerisati ECS (list-clusters, list-container-instances, list-services, list-task-definitions), takođe može izvući definicije zadataka.

### Enumeracija
```bash
# 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>
```
### Neautentifikovani Pristup

{{#ref}}
../aws-unauthenticated-enum-access/aws-ecs-unauthenticated-enum.md
{{#endref}}

### Povećanje Privilegija

Na sledećoj stranici možete proveriti kako da **zloupotrebite ECS dozvole za povećanje privilegija**:

{{#ref}}
../aws-privilege-escalation/aws-ecs-privesc.md
{{#endref}}

### Post Eksploatacija

{{#ref}}
../aws-post-exploitation/aws-ecs-post-exploitation.md
{{#endref}}

### Postojanost

{{#ref}}
../aws-persistence/aws-ecs-persistence.md
{{#endref}}

{{#include ../../../banners/hacktricks-training.md}}
