From 82e708b0171fee950ea9b9a3d67c191020118c00 Mon Sep 17 00:00:00 2001 From: Translator Date: Sun, 3 May 2026 08:46:56 +0000 Subject: [PATCH] Translated ['', 'src/pentesting-cloud/aws-security/aws-services/aws-ecs- --- .../aws-security/aws-services/aws-ecs-enum.md | 69 ++++++++++++++----- 1 file changed, 51 insertions(+), 18 deletions(-) diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-ecs-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-ecs-enum.md index 490e3cc7a..4e6f3d21d 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-ecs-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-ecs-enum.md @@ -6,28 +6,28 @@ ### Informazioni di base -Amazon **Elastic Container Services** o ECS fornisce una piattaforma per **ospitare applicazioni containerizzate nel cloud**. ECS ha due metodi di **distribuzione**, tipo di istanza **EC2** e un'opzione **serverless**, **Fargate**. Il servizio **rende molto facile e senza problemi eseguire container nel cloud**. +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 utilizzando i seguenti tre elementi fondamentali: **Cluster**, **Servizi** e **Definizioni di Task**. +ECS opera usando i seguenti tre blocchi fondamentali: **Clusters**, **Services** e **Task Definitions**. -- **Cluster** sono **gruppi di container** che stanno girando nel cloud. Come già accennato, ci sono due tipi di avvio per i container, EC2 e Fargate. AWS definisce il tipo di avvio **EC2** come che consente ai clienti “di eseguire \[le loro\] applicazioni containerizzate su un cluster di istanze Amazon EC2 che \[essi\] **gestiscono**”. **Fargate** è simile e viene definito come “\[consentendo\] di eseguire le proprie applicazioni containerizzate **senza la necessità di fornire e gestire** l'infrastruttura di backend”. -- **Servizi** vengono creati all'interno di un cluster e sono responsabili per **eseguire i task**. All'interno di una definizione di servizio **si definisce il numero di task da eseguire, l'auto scaling, il fornitore di capacità (Fargate/EC2/Esterno),** informazioni di **networking** come VPC, subnet e gruppi di sicurezza. +- **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**: -- **Servizio**: Un gruppo di task che gestisce un lavoro di calcolo a lungo termine che può essere interrotto e riavviato. Ad esempio, un'applicazione web. -- **Task**: Un task autonomo che viene eseguito e termina. Ad esempio, un lavoro batch. -- Tra le applicazioni di servizio, ci sono **2 tipi di pianificatori di servizio**: -- [**REPLICA**](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html): La strategia di pianificazione replica posiziona e **mantiene il numero desiderato** di task nel tuo cluster. Se per qualche motivo un task si spegne, ne viene avviato uno nuovo nello stesso o in un nodo diverso. -- [**DAEMON**](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html): Distribuisce esattamente un task su ciascuna istanza di container attiva che ha i requisiti necessari. Non è necessario specificare un numero desiderato di task, una strategia di posizionamento dei task o utilizzare le politiche di Auto Scaling del Servizio. -- **Definizioni di Task** sono responsabili per **definire quali container verranno eseguiti** e i vari parametri che verranno configurati con i container come **mappature delle porte** con l'host, **variabili d'ambiente**, **entrypoint** di Docker... -- Controlla **le variabili d'ambiente per informazioni sensibili**! +- **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**](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html): 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**](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html): 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 Definizioni di Task +### Dati sensibili nelle Task Definitions -Le definizioni di task sono responsabili per **configurare i container effettivi che verranno eseguiti in ECS**. Poiché le definizioni di task definiscono come verranno eseguiti i container, una miriade di informazioni può essere trovata al loro interno. +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 estrarre le definizioni di task. +Pacu può enumerare ECS (list-clusters, list-container-instances, list-services, list-task-definitions), può anche fare il dump delle task definitions. -### Enumerazione +### Enumeration ```bash # Clusters info aws ecs list-clusters @@ -51,7 +51,40 @@ aws ecs describe-tasks --cluster --tasks ## Look for env vars and secrets used from the task definition aws ecs describe-task-definition --task-definition : ``` -### Accesso non autenticato +### 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`). +```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 +``` +#### 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](https://cloud.hacktricks.wiki/en/pentesting-cloud/aws-security/aws-services/aws-ecs-enum.html) (`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 {{#ref}} ../aws-unauthenticated-enum-access/aws-ecs-unauthenticated-enum/README.md @@ -59,7 +92,7 @@ aws ecs describe-task-definition --task-definition : ### Privesc -Nella pagina seguente puoi controllare come **abusare delle autorizzazioni ECS per escalare i privilegi**: +Nella pagina seguente puoi vedere come **abuse ECS permissions to escalate privileges**: {{#ref}} ../aws-privilege-escalation/aws-ecs-privesc/README.md @@ -71,7 +104,7 @@ Nella pagina seguente puoi controllare come **abusare delle autorizzazioni ECS p ../aws-post-exploitation/aws-ecs-post-exploitation/README.md {{#endref}} -### Persistenza +### Persistence {{#ref}} ../aws-persistence/aws-ecs-persistence/README.md