脏牛Linux本地提权漏洞复现(CVE-5195)

时间:2024-03-26 19:16:53

漏洞介绍:

脏牛漏洞(CVE2016-5195)是公开后影响范围最广和最深的漏洞之一,到2016被修复只十年来的每一个linux版本包括Android,桌面版和服务器版都受其影响。恶意攻击者可以轻易绕过常用的漏洞防御方法,对几百万用户进行攻击。国外安全公司Bindecy对该补丁和内容做出深入研究后发现补丁任然存在缺陷,由此还衍生出了“大脏牛”漏洞

漏洞范围:

Linux kernel >=2.6.22(2007年发行,到2016年10月18日才修复)

使用一下方式自查是否存在此漏洞:

使用 uname -a 查看linux系统的内核版本,如:

Linux AYxxxx 2.6.32-431.23.3.el6.x86_64 #1 SMP Thu Jul 31 17:20:51 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

上诉内核版本2.6.32-431.23.3.el6.x86_61受漏洞影响

Linux AYxxxx 2.6.18-308.el5 #1 SMP Tue Feb 21 20:06:06 EST 2012 x86_64 x86_64 x86_64 GNU/Linux

上述内核版本2.6.18-308.el5不受漏洞影响。

借鉴阿里云安全团队收集的linux镜像受影响范围:

脏牛Linux本地提权漏洞复现(CVE2016-5195)

漏洞产生原因:

linux内核的内存子系统存在处理写时拷贝(copy-on-write)时存在竞争漏洞,导致可以破坏私有只读内存映射。

一个低权限的本地用户能够利用此漏洞获取其他只读内存映射的写权限,有可能进一步导致提权漏洞

我复现漏洞成功所用exp:

dirty

编译命令:gcc -pthread dirty.c -o dirty -lcrypt

复现环境:

脏牛Linux本地提权漏洞复现(CVE2016-5195)

脏牛Linux本地提权漏洞复现(CVE2016-5195)

运行编译好后的程序后,提示输入密码,等待一段时间,提示用户名和密码即为成功。

然后 su  firefart 后输入密码即可

脏牛Linux本地提权漏洞复现(CVE2016-5195)

修复建议:

1:升级内核,做好数据的备份

注意:cve2016-5159是c++编写,需要用g++编译,在使用每一个exp之前请认真看各个的源代码和redame,不懂的评论问我!!!

其他exp:

exp2:CVE-2016-5195

官方exp:官方exp

上述漏洞的复现文章及分析文章

利用 dirty cow(脏牛)漏洞的提权尝试

“大脏牛”漏洞分析(CVE-2017-1000405)