From 85824c31f9afb7349366b931fe53eb88ddddfaa0 Mon Sep 17 00:00:00 2001 From: Translator Date: Sun, 3 May 2026 08:46:59 +0000 Subject: [PATCH] Translated ['', 'src/pentesting-cloud/aws-security/aws-services/aws-ecs- --- .../aws-security/aws-services/aws-ecs-enum.md | 77 +++++++++++++------ 1 file changed, 55 insertions(+), 22 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 dbac7f52a..fe7b08cac 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 @@ -4,30 +4,30 @@ ## ECS -### Temel Bilgiler +### Basic Information -Amazon **Elastic Container Services** veya ECS, **konteynerleştirilmiş uygulamaları bulutta barındırmak için bir platform** sağlar. ECS'nin iki **dağıtım** yöntemi vardır: **EC2** örnek türü ve **sunucusuz** seçenek olan **Fargate**. Bu hizmet, **bulutta konteyner çalıştırmayı çok kolay ve sorunsuz hale getirir**. +Amazon **Elastic Container Services** veya ECS, **bulutta containerized applications barındırmak** için bir platform sağlar. ECS'nin iki **deployment** yöntemi vardır: **EC2** instance type ve bir **serverless** seçenek olan **Fargate**. Bu servis, bulutta container çalıştırmayı çok kolay ve sorunsuz hale getirir. -ECS, aşağıdaki üç yapı taşını kullanarak çalışır: **Küme**, **Hizmetler** ve **Görev Tanımları**. +ECS, aşağıdaki üç yapı taşıyla çalışır: **Clusters**, **Services** ve **Task Definitions**. -- **Kümeler**, bulutta çalışan **konteyner gruplarıdır**. Daha önce belirtildiği gibi, konteynerler için iki başlatma türü vardır: EC2 ve Fargate. AWS, **EC2** başlatma türünü, müşterilerin “**yönetilen** bir Amazon EC2 örnekleri kümesinde \[konteynerleştirilmiş uygulamalarını] çalıştırmalarına” izin veren bir tür olarak tanımlar. **Fargate** benzer şekilde tanımlanır ve “\[konteynerleştirilmiş uygulamalarınızı **arka uç altyapısını sağlama ve yönetme ihtiyacı olmadan** çalıştırmanıza] izin verir” şeklindedir. -- **Hizmetler**, bir küme içinde oluşturulur ve **görevleri çalıştırmaktan** sorumludur. Bir hizmet tanımı içinde **çalıştırılacak görev sayısını, otomatik ölçeklendirmeyi, kapasite sağlayıcısını (Fargate/EC2/Dış),** **ağ** bilgilerini, VPC'ler, alt ağlar ve güvenlik grupları gibi tanımlarsınız. -- **2 tür uygulama** vardır: -- **Hizmet**: Durdurulup yeniden başlatılabilen uzun süreli bir hesaplama işini yöneten görevler grubudur. Örneğin, bir web uygulaması. -- **Görev**: Çalışan ve sona eren bağımsız bir görevdir. Örneğin, bir toplu iş. -- Hizmet uygulamaları arasında **2 tür hizmet zamanlayıcı** vardır: -- [**REPLICA**](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html): Replica zamanlama stratejisi, kümeniz genelinde **istenen görev sayısını** yerleştirir ve **korur**. Eğer bir görev herhangi bir nedenle kapatılırsa, aynı veya farklı bir düğümde yeni bir görev başlatılır. -- [**DAEMON**](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html): Gerekli gereksinimlere sahip her aktif konteyner örneğinde tam olarak bir görev dağıtır. İstenen görev sayısını, görev yerleştirme stratejisini belirtmeye veya Hizmet Otomatik Ölçeklendirme politikalarını kullanmaya gerek yoktur. -- **Görev Tanımları**, **çalışacak konteynerlerin ne olacağını tanımlamaktan** sorumludur ve konteynerlerle yapılandırılacak çeşitli parametreleri içerir, örneğin **port eşlemeleri**, **env değişkenleri**, Docker **giriş noktası**... -- Hassas bilgiler için **env değişkenlerini kontrol edin**! +- **Clusters**, bulutta çalışan **container gruplarıdır**. Daha önce de belirtildiği gibi, container’lar için iki launch type vardır: EC2 ve Fargate. AWS, **EC2** launch type’ını müşterilerin “\[\] containerized applications on a cluster of Amazon EC2 instances that \[they\] **manage**” çalıştırmasına izin veren bir yapı olarak tanımlar. **Fargate** benzerdir ve “\[\] backend infrastructure’ı **provision etme ve manage etme gereği olmadan** containerized applications çalıştırmanıza izin verir” şeklinde tanımlanır. +- **Services**, bir cluster içinde oluşturulur ve **tasks çalıştırmaktan** sorumludur. Bir service tanımı içinde **çalıştırılacak task sayısını, auto scaling, capacity provider (Fargate/EC2/External),** **networking** bilgilerini; örneğin VPC’s, subnets ve security groups’u tanımlarsınız. +- **2 tür application** vardır: +- **Service**: Uzun süre çalışan, durdurulup yeniden başlatılabilen bir computing work’i yöneten task grubudur. Örneğin bir web application. +- **Task**: Çalışıp sonlanan bağımsız bir task’tır. Örneğin bir batch job. +- Service applications arasında **2 tür service scheduler** vardır: +- [**REPLICA**](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html): Replica scheduling strategy, cluster genelinde istenen sayıda task’i yerleştirir ve **sürdürür**. Herhangi bir nedenle bir task kapanırsa, aynı veya farklı bir node üzerinde yenisi başlatılır. +- [**DAEMON**](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html): Gerekli şartları karşılayan her aktif container instance üzerinde tam olarak bir task dağıtır. İstenen task sayısını belirtmeye, task placement strategy tanımlamaya veya Service Auto Scaling policies kullanmaya gerek yoktur. +- **Task Definitions**, **hangi container’ların çalışacağını** ve container’larla yapılandırılacak çeşitli parametreleri; örneğin host ile **port mappings**, **env variables**, Docker **entrypoint**... tanımlar. +- **Hassas bilgi için env variables** kontrol edin! -### Görev Tanımlarında Hassas Veriler +### Sensitive Data In Task Definitions -Görev tanımları, **ECS'de çalışacak gerçek konteynerleri yapılandırmaktan** sorumludur. Görev tanımları, konteynerlerin nasıl çalışacağını tanımladığından, içinde çok sayıda bilgi bulunabilir. +Task definitions, ECS içinde **gerçekte çalışacak container’ları yapılandırmaktan** sorumludur. Task definitions container’ların nasıl çalışacağını tanımladığı için, içinde çok sayıda bilgi bulunabilir. -Pacu, ECS'yi listeleyebilir (list-clusters, list-container-instances, list-services, list-task-definitions), ayrıca görev tanımlarını da dökebilir. +Pacu ECS’yi enumerate edebilir (list-clusters, list-container-instances, list-services, list-task-definitions), ayrıca task definitions dump edebilir. -### Sayım +### Enumeration ```bash # Clusters info aws ecs list-clusters @@ -51,27 +51,60 @@ aws ecs describe-tasks --cluster --tasks ## Look for env vars and secrets used from the task definition aws ecs describe-task-definition --task-definition : ``` -### Kimlik Doğrulama Olmadan Erişim +### ECS Agent State DB (`agent.db`) üzerinden On-Host Enumeration + +Bir **ECS container instance** üzerinde **shell access** sahibi olduğunuzda, ya da **`/var/lib/ecs` için host bind-mount** ile bir container’dan **escape ettiğinizde** (task’ler privileged çalıştığında veya `volumesFrom` host data dir’i expose ettiğinde görülen yaygın bir misconfiguration), ECS agent diskte `agent.db` bırakır; bu dosya **hiçbir AWS API call olmadan**, **hiçbir IAM permission olmadan** ve **CloudTrail tetiklemeden** okunabilir. +``` +/var/lib/ecs/data/agent.db +``` +(veya, host'un `/host` altında mount edildiği bir container'dan okurken, `/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 +``` +#### Neleri kurtarabilirsiniz + +Cluster'ın yaşı ve workload churn'a bağlı olarak, `agent.db` üzerinde `strings` genellikle şunları verir: + +- Her task için agent'ın çalıştırdığı **Task ve execution IAM role ARN'leri** (`taskRoleArn`, `executionRoleArn`) — [task metadata endpoint](https://cloud.hacktricks.wiki/en/pentesting-cloud/aws-security/aws-services/aws-ecs-enum.html) (`169.254.170.2`) üzerinden credential retrieval için kullanışlı hedefler. +- **Tam task definitions** — image URI'leri (çoğu zaman private ECR repos), command, entrypoint, port mappings, mount points, log configuration ve sık sık database URL'leri, API token'ları ve third-party secret'ları içeren **plaintext environment variables**. +- **Secrets referansları** — SSM Parameter Store yollarına ve Secrets Manager ARN'lerine işaret eden `secretOptions` ve `secrets` blokları (harika pivot listesi). +- **Container instance ARN, cluster ARN ve registration token** — API call olmadan cluster adını ve account/region bağlamını doğrular. +- **ENI metadata** — `awsvpc` modunda atanmış private IP'ler, MAC adresleri, subnet ID'leri ve security group ID'leri (lateral movement planlaması için kullanışlı). +- **Image pull credentials** — task definition `repositoryCredentials` kullanıyorsa, ilgili Secrets Manager ARN burada olur; eski agent'larda private-registry auth blob'ları (`ECS_ENGINE_AUTH_DATA`) da cache'lenmiş olabilir. +- **Yakın zamanda durmuş task container'ları** — isimler, ID'ler, exit code'lar ve label'lar dahil; bazen ilgili `aws ecs describe-tasks` çağrısı API response'tan bunları düşürmüş olduktan çok sonra bile. + +### Unauthenticated Access {{#ref}} ../aws-unauthenticated-enum-access/aws-ecs-unauthenticated-enum/README.md {{#endref}} -### Yetki Yükseltme +### Privesc -Aşağıdaki sayfada **ECS izinlerini kötüye kullanarak yetki yükseltme** yöntemini kontrol edebilirsiniz: +Aşağıdaki sayfada **ECS permissions'larını abuse ederek privileges yükseltmeyi** nasıl yapabileceğinizi kontrol edebilirsiniz: {{#ref}} ../aws-privilege-escalation/aws-ecs-privesc/README.md {{#endref}} -### Sonrası İstismar +### Post Exploitation {{#ref}} ../aws-post-exploitation/aws-ecs-post-exploitation/README.md {{#endref}} -### Süreklilik +### Persistence {{#ref}} ../aws-persistence/aws-ecs-persistence/README.md