# AWS - ECR Enum

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

## ECR

### 基本情報

Amazon **Elastic Container Registry** (Amazon ECR) は **管理されたコンテナイメージレジストリサービス** です。これは、顧客がよく知られたインターフェースを使用してコンテナイメージと対話できる環境を提供するように設計されています。具体的には、Docker CLI または任意の好ましいクライアントの使用がサポートされており、コンテナイメージのプッシュ、プル、および管理などの活動を可能にします。

ECRは2種類のオブジェクトで構成されています: **レジストリ** と **リポジトリ**。

**レジストリ**

すべてのAWSアカウントには2つのレジストリがあります: **プライベート** と **パブリック**。

1. **プライベートレジストリ**:

- **デフォルトでプライベート**: Amazon ECRプライベートレジストリに保存されたコンテナイメージは、**あなたのAWSアカウント内の認可されたユーザー**または許可を与えられたユーザーのみが**アクセス可能**です。
- **プライベートリポジトリ**のURIは、`<account_id>.dkr.ecr.<region>.amazonaws.com/<repo-name>` の形式に従います。
- **アクセス制御**: **IAMポリシー**を使用してプライベートコンテナイメージへの**アクセスを制御**でき、ユーザーやロールに基づいて細かい権限を設定できます。
- **AWSサービスとの統合**: Amazon ECRプライベートレジストリは、EKS、ECSなどの他のAWSサービスと簡単に**統合**できます。
- **他のプライベートレジストリオプション**:
- タグ不変性の列はそのステータスを示し、タグ不変性が有効になっている場合、**既存のタグ**を持つイメージの**プッシュ**が上書きされるのを**防ぎます**。
- **暗号化タイプ**の列はリポジトリの暗号化プロパティを示し、AES-256などのデフォルトの暗号化タイプや**KMS**が有効な暗号化を表示します。
- **プルスルーキャッシュ**の列はそのステータスを示し、プルスルーキャッシュのステータスがアクティブであれば、**外部パブリックリポジトリのリポジトリをプライベートリポジトリにキャッシュ**します。
- 特定の**IAMポリシー**を設定して異なる**権限**を付与できます。
- **スキャン設定**により、リポジトリ内に保存されたイメージの脆弱性をスキャンできます。

2. **パブリックレジストリ**:

- **パブリックアクセス**: ECRパブリックレジストリに保存されたコンテナイメージは、**インターネット上の誰でも認証なしにアクセス可能**です。
- **パブリックリポジトリ**のURIは `public.ecr.aws/<random>/<name>` のようになります。`<random>` 部分は管理者によって覚えやすい別の文字列に変更できます。

**リポジトリ**

これらは **プライベートレジストリ** または **パブリック** にある **イメージ** です。

> [!NOTE]
> リポジトリにイメージをアップロードするには、**ECRリポジトリがイメージと同じ名前である必要があります**。

#### レジストリ & リポジトリポリシー

**レジストリとリポジトリ**には、**他のプリンシパル/アカウントに権限を付与するために使用できるポリシー**もあります。たとえば、次のリポジトリポリシーの画像では、組織全体の任意のユーザーがイメージにアクセスできることがわかります。

<figure><img src="../../../images/image (280).png" alt=""><figcaption></figcaption></figure>

### 列挙
```bash
# Get repos
aws ecr describe-repositories
aws ecr describe-registry

# Get image metadata
aws ecr list-images --repository-name <repo_name>
aws ecr describe-images --repository-name <repo_name>
aws ecr describe-image-replication-status --repository-name <repo_name> --image-id <image_id>
aws ecr describe-image-scan-findings --repository-name <repo_name> --image-id <image_id>
aws ecr describe-pull-through-cache-rules --repository-name <repo_name> --image-id <image_id>

# Get public repositories
aws ecr-public describe-repositories

# Get policies
aws ecr get-registry-policy
aws ecr get-repository-policy --repository-name <repo_name>
```
### 認証されていない列挙

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

### 権限昇格

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

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

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

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

### 永続性

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

## 参考文献

- [https://docs.aws.amazon.com/AmazonECR/latest/APIReference/Welcome.html](https://docs.aws.amazon.com/AmazonECR/latest/APIReference/Welcome.html)

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