AWS - ECR Enum

AWS - ECR Enum

支持 HackTricks

ECR

基本信息

亚马逊 弹性容器注册表 (Amazon ECR) 是一个 托管的容器镜像注册表服务。它旨在提供一个环境,客户可以使用众所周知的接口与他们的容器镜像进行交互。具体来说,支持使用 Docker CLI 或任何首选客户端,进行推送、拉取和管理容器镜像等活动。

ECR 由两种类型的对象组成:注册表仓库

注册表

每个 AWS 账户有两个注册表:私有公共

  1. 私有注册表

  • 默认私有:存储在 Amazon ECR 私有注册表中的容器镜像 仅对您 AWS 账户内的授权用户 或已获得权限的用户可访问。

  • 私有仓库 的 URI 格式为 <account_id>.dkr.ecr.<region>.amazonaws.com/<repo-name>

  • 访问控制:您可以使用 IAM 策略 控制对私有容器镜像的访问,并可以根据用户或角色配置细粒度权限。

  • 与 AWS 服务的集成:Amazon ECR 私有注册表可以轻松 与其他 AWS 服务集成,如 EKS、ECS...

  • 其他私有注册表选项

  • 标签不可变性列显示其状态,如果启用标签不可变性,它将 防止 使用 已存在标签 的镜像 推送 覆盖镜像。

  • 加密类型 列显示仓库的加密属性,显示默认加密类型,如 AES-256,或启用了 KMS 加密。

  • 拉取缓存 列显示其状态,如果拉取缓存状态为活动,它将把 外部公共仓库中的仓库缓存到您的私有仓库

  • 可以配置特定的 IAM 策略 以授予不同的 权限

  • 扫描配置 允许扫描存储在仓库中的镜像中的漏洞。

  1. 公共注册表

  • 公共可访问性:存储在 ECR 公共注册表中的容器镜像 对互联网上的任何人可访问,无需身份验证

  • 公共仓库 的 URI 类似于 public.ecr.aws/<random>/<name>。虽然 <random> 部分可以由管理员更改为更易记的字符串。

仓库

这些是 私有注册表公共注册表 中的 镜像

请注意,为了将镜像上传到仓库,ECR 仓库需要与镜像同名

注册表和仓库策略

注册表和仓库 也有 可以用于授予其他主体/账户权限的策略。例如,在以下仓库策略图像中,您可以看到整个组织中的任何用户都将能够访问该镜像:

枚举

# Get repos
aws ecr describe-repositories
aws ecr describe-registry

# Get image metadata
aws ecr list-images --repository-name <repo_name>
aws ecr describe-images --repository-name <repo_name>
aws ecr describe-image-replication-status --repository-name <repo_name> --image-id <image_id>
aws ecr describe-image-scan-findings --repository-name <repo_name> --image-id <image_id>
aws ecr describe-pull-through-cache-rules --repository-name <repo_name> --image-id <image_id>

# Get public repositories
aws ecr-public describe-repositories

# Get policies
aws ecr get-registry-policy
aws ecr get-repository-policy --repository-name <repo_name>

未认证枚举

AWS - ECR Unauthenticated Enum

权限提升

在以下页面中,您可以查看如何滥用 ECR 权限以提升权限

AWS - ECR Privesc

利用后

AWS - ECR Post Exploitation

持久性

AWS - ECR Persistence

参考

支持 HackTricks

Last updated