# AWS - ECR Enum

## AWS - ECR Enum

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

### ECR

#### Informations de base

Amazon **Elastic Container Registry** (Amazon ECR) est un **service de registre d'images de conteneurs géré**. Il est conçu pour fournir un environnement où les clients peuvent interagir avec leurs images de conteneurs en utilisant des interfaces bien connues. Plus précisément, l'utilisation de l'interface en ligne de commande Docker ou de tout client préféré est prise en charge, permettant des activités telles que le push, le pull et la gestion des images de conteneurs.

ECR est composé de 2 types d'objets : **Registres** et **Dépôts**.

**Registres**

Chaque compte AWS a 2 registres : **Privé** & **Public**.

1. **Registres privés** :

- **Privé par défaut** : Les images de conteneurs stockées dans un registre privé Amazon ECR sont **uniquement accessibles aux utilisateurs autorisés** au sein de votre compte AWS ou à ceux à qui des autorisations ont été accordées.
- L'URI d'un **dépôt privé** suit le format `<account_id>.dkr.ecr.<region>.amazonaws.com/<repo-name>`
- **Contrôle d'accès** : Vous pouvez **contrôler l'accès** à vos images de conteneurs privées en utilisant des **politiques IAM**, et vous pouvez configurer des autorisations granulaires basées sur des utilisateurs ou des rôles.
- **Intégration avec les services AWS** : Les registres privés Amazon ECR peuvent être facilement **intégrés avec d'autres services AWS**, tels que EKS, ECS...
- **Autres options de registre privé** :
- La colonne d'immuabilité des tags indique son statut, si l'immuabilité des tags est activée, elle **empêchera** les **pushs** d'images avec des **tags préexistants** de remplacer les images.
- La colonne **Type de chiffrement** liste les propriétés de chiffrement du dépôt, elle montre les types de chiffrement par défaut tels que AES-256, ou a des chiffrages **KMS** activés.
- La colonne **Pull through cache** indique son statut, si le statut Pull through cache est Actif, il mettra en cache les **dépôts dans un dépôt public externe dans votre dépôt privé**.
- Des **politiques IAM** spécifiques peuvent être configurées pour accorder différentes **permissions**.
- La **configuration de scan** permet de scanner les vulnérabilités dans les images stockées dans le dépôt.

2. **Registres publics** :

- **Accessibilité publique** : Les images de conteneurs stockées dans un registre public ECR sont **accessibles à quiconque sur Internet sans authentification.**
- L'URI d'un **dépôt public** est comme `public.ecr.aws/<random>/<name>`. Bien que la partie `<random>` puisse être changée par l'administrateur en une autre chaîne plus facile à retenir.

**Dépôts**

Ce sont les **images** qui se trouvent dans le **registre privé** ou dans le **public**.

> [!NOTE]
> Notez que pour télécharger une image dans un dépôt, le **dépôt ECR doit avoir le même nom que l'image**.

#### Politiques de registre et de dépôt

Les **registres et dépôts** ont également des **politiques qui peuvent être utilisées pour accorder des permissions à d'autres principaux/comptes**. Par exemple, dans l'image de politique de dépôt suivante, vous pouvez voir comment tout utilisateur de l'ensemble de l'organisation pourra accéder à l'image :

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

#### Énumération
```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>
```
#### Enum non authentifié

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

#### Élévation de privilèges

Dans la page suivante, vous pouvez vérifier comment **abuser des permissions ECR pour élever les privilèges** :

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

#### Post-exploitation

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

#### Persistance

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

## Références

- [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}}
