【实验目的】
了解脏牛漏洞的成因与危害,进行脏牛漏洞的复现。
【知识点】
CVE-2016-5195,本地提权
【实验原理】
1.脏牛漏洞该漏洞是Linux的一个本地提权漏洞,发现者是PhilOester,影响>=2.6.22的所有Linux内核版本,修复时间是2016年10月18号。该漏洞的原因是get_user_page内核函数在处理Copy-on-Write(以下使用COW表示)的过程中,可能产出竞态条件造成COW过程被破坏,导致出现写数据到进程地址空间内只读内存区域的机会。当我们向带有MAP_PRIVATE标记的只读文件映射区域写数据时,会产生一个映射文件的复制(COW),对此区域的任何修改都不会写回原来的文件,如果上述的竞态条件发生,就能成功的写回原来的文件。比如我们修改su或者passwd程序就可以达到root的目的。
漏洞编号:CVE-2016-5195
漏洞类型:内核竞态条件漏洞漏洞危害:本地提权影响范围:Linuxkernel>2.6.22
漏洞影响:没有权限的本地用户可以使用此漏洞获取写访问权限,修改制度内存映射,从而提权。该漏洞允许攻击者使用本地账户修改磁盘上的二进制文件,绕过标准权限的限制,这些权限机制通常用于防止修改没有适当的权限集。
2.修复方式CentOS用户:升级内核。Ubuntu用户:运行sudoapt-getupdate;sudoapt-getupgrade进行系统更新,更新后重启系统生效。Debian用户:运行apt-getupdate;apt-getupgrade进行系统更新,更新后重启系统生效。SUSELinuxEnterpriseServer用户及OpenSUSE用户:openSUSE13.264位官方暂未发布补丁,其他版本可运行zypperrefresh;zypperupdatekernel-default进行系统更新,更新后重启系统生效。CoreOS用户:运行update_engine_client-update,更新后重启系统生效。
【软件工具】
操作系统:Ubuntu14其他:gcc
【实验目标】
漏洞复现前的准备工作,漏洞复现。
【实验步骤】
步骤1:
漏洞复现前的准备工作进入系统后,点击左侧的终端图标新建一个终端。
查看系统版本,命令为cat/proc/version。这个版本是存在脏牛漏洞的
切换到root用户,命令为suroot,然后输入密码:123456。
创建一个文件abc,命令为touchabc,并填写内容123,命令为echo"123">abc。
查看该文件的权限,命令为ll,m用户没有文件abc的写入和执行权限。
步骤2:
漏洞复现切换回m用户,命令为sum。
尝试将文字“qwe”写入文件abc中,命令为echo"qwe">abc。显示没有权限,说明m用户不能写入。
编译main.c,并生成可执行文件m,命令为gccmain.c-lpthread-om。
执行程序,将“qwe”写入文件abc中,命令为./mabcqwe。过程需要一些时间,请耐心等待。执行结束后可以看到m用户成功修改了root权限的文件内容。于是只要修改/etc/passwd,把当前用户的uid改成0就可以作为root登录了
。