# AWS - ECS Enum

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

## ECS

### 基本情報

Amazon **Elastic Container Services**（ECS）は、**クラウドでコンテナ化されたアプリケーションをホストするためのプラットフォーム**を提供します。ECSには、**EC2**インスタンスタイプと**サーバーレス**オプションである**Fargate**の2つの**デプロイメント**方法があります。このサービスは、**クラウドでコンテナを実行するのを非常に簡単かつストレスフリーにします**。

ECSは、以下の3つのビルディングブロックを使用して動作します：**クラスター**、**サービス**、および**タスク定義**。

- **クラスター**は、**クラウドで実行されているコンテナのグループ**です。前述のように、コンテナにはEC2とFargateの2つの起動タイプがあります。AWSは、**EC2**起動タイプを「顧客が「自分の」コンテナ化されたアプリケーションを、顧客が**管理する**Amazon EC2インスタンスのクラスターで実行できるようにする」と定義しています。**Fargate**は似ており、「**バックエンドインフラストラクチャをプロビジョニングおよび管理する必要なく**、コンテナ化されたアプリケーションを実行できる」と定義されています。
- **サービス**はクラスター内に作成され、**タスクを実行する**責任があります。サービス定義内では、**実行するタスクの数、自動スケーリング、キャパシティプロバイダー（Fargate/EC2/External）、** **ネットワーキング**情報（VPC、サブネット、セキュリティグループなど）を定義します。
- **アプリケーションの種類は2つ**あります：
- **サービス**：停止および再起動可能な長時間実行される計算作業を処理するタスクのグループ。例えば、ウェブアプリケーション。
- **タスク**：実行されて終了するスタンドアロンのタスク。例えば、バッチジョブ。
- サービスアプリケーションの中には、**2種類のサービススケジューラー**があります：
- [**REPLICA**](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html)：レプリカスケジューリング戦略は、クラスター全体で**希望する数**のタスクを配置および**維持**します。何らかの理由でタスクがシャットダウンした場合、新しいタスクが同じまたは異なるノードで起動されます。
- [**DAEMON**](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_services.html)：必要な要件を持つ各アクティブコンテナインスタンスに正確に1つのタスクをデプロイします。希望するタスクの数、タスク配置戦略、またはサービス自動スケーリングポリシーを指定する必要はありません。
- **タスク定義**は、**実行されるコンテナを定義する**責任があります。また、**ポートマッピング**、**環境変数**、Dockerの**エントリポイント**など、コンテナに設定されるさまざまなパラメータも含まれます。
- **機密情報のために環境変数を確認してください**！

### タスク定義における機密データ

タスク定義は、**ECSで実行される実際のコンテナを構成する**責任があります。タスク定義はコンテナの実行方法を定義するため、多くの情報が含まれています。

PacuはECSを列挙できます（list-clusters、list-container-instances、list-services、list-task-definitions）、またタスク定義をダンプすることもできます。

### 列挙
```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>
```
### 認証されていないアクセス

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

### 権限昇格

次のページでは、**ECSの権限を悪用して権限を昇格させる方法**を確認できます：

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

### ポストエクスプロイト

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

### 永続性

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

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