# AWS - ECR Enum

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

## ECR

### Informazioni di base

Amazon **Elastic Container Registry** (Amazon ECR) è un **servizio di registrazione di immagini di container gestito**. È progettato per fornire un ambiente in cui i clienti possono interagire con le loro immagini di container utilizzando interfacce ben note. In particolare, è supportato l'uso del Docker CLI o di qualsiasi client preferito, consentendo attività come il caricamento, il download e la gestione delle immagini di container.

ECR è composto da 2 tipi di oggetti: **Registries** e **Repositories**.

**Registries**

Ogni account AWS ha 2 registri: **Privati** e **Pubblici**.

1. **Registri Privati**:

- **Privati per impostazione predefinita**: Le immagini di container memorizzate in un registro privato di Amazon ECR sono **accessibili solo agli utenti autorizzati** all'interno del tuo account AWS o a coloro a cui è stata concessa l'autorizzazione.
- L'URI di un **repository privato** segue il formato `<account_id>.dkr.ecr.<region>.amazonaws.com/<repo-name>`
- **Controllo degli accessi**: Puoi **controllare l'accesso** alle tue immagini di container private utilizzando **politiche IAM**, e puoi configurare permessi dettagliati basati su utenti o ruoli.
- **Integrazione con i servizi AWS**: I registri privati di Amazon ECR possono essere facilmente **integrati con altri servizi AWS**, come EKS, ECS...
- **Altre opzioni per i registri privati**:
- La colonna dell'immutabilità dei tag elenca il suo stato, se l'immutabilità dei tag è abilitata, **prevenirà** i **push** di immagini con **tag preesistenti** di sovrascrivere le immagini.
- La colonna del **tipo di crittografia** elenca le proprietà di crittografia del repository, mostra i tipi di crittografia predefiniti come AES-256, o ha crittografie abilitate **KMS**.
- La colonna del **Pull through cache** elenca il suo stato, se lo stato del Pull through cache è Attivo, memorizzerà nella cache **repository in un repository pubblico esterno nel tuo repository privato**.
- Politiche **IAM specifiche** possono essere configurate per concedere diverse **autorizzazioni**.
- La **configurazione della scansione** consente di scansionare le vulnerabilità nelle immagini memorizzate all'interno del repository.

2. **Registri Pubblici**:

- **Accessibilità pubblica**: Le immagini di container memorizzate in un registro pubblico ECR sono **accessibili a chiunque su Internet senza autenticazione.**
- L'URI di un **repository pubblico** è simile a `public.ecr.aws/<random>/<name>`. Anche se la parte `<random>` può essere cambiata dall'amministratore in un'altra stringa più facile da ricordare.

**Repositories**

Queste sono le **immagini** che si trovano nel **registro privato** o in quello **pubblico**.

> [!NOTE]
> Nota che per caricare un'immagine in un repository, il **repository ECR deve avere lo stesso nome dell'immagine**.

#### Politiche di Registro e Repository

**Registries e repositories** hanno anche **politiche che possono essere utilizzate per concedere autorizzazioni ad altri principi/account**. Ad esempio, nella seguente immagine della politica del repository puoi vedere come qualsiasi utente dell'intera organizzazione sarà in grado di accedere all'immagine:

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

### Enumerazione
```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 autenticato

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

### Privesc

Nella pagina seguente puoi controllare come **abuse ECR permissions to escalate privileges**:

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

### Post Exploitation

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

### Persistenza

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

## Riferimenti

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