这两天遇到了一个渗透到了提权阶段,结果折腾了半天也没提权上去。。。就正好复现了几个提权方法
- 影响范围
Linux kernel >= 2.6.22(2007年发行)开始就受影响了,直到2016年10月18日才修复。
- 漏洞原理
在 Linux 内核的内存子系统处理私有只读内存映射的写时复制 (Copy-on-Write) 破坏的方式中发现了竞争条件漏洞,从而导致破坏私有只读内存映射。
一个没有特权的本地用户可以利用这个缺陷来获得对其他只读内存映射的写权限,从而获取到更高的权限。
相关说明:https://github.com/dirtycow/dirtycow.github.io/wiki/VulnerabilityDetails
- 复现过程
这里附上两个poc:
poc1:https://github.com/gbonacini/CVE-2016-5195
poc2:https://github.com/FireFart/dirtycow
这里先用第一个来测试
查看id
通过uname -a 来查看linux的内核版本
github上也有自动检测工具
https://github.com/mzet-/linux-exploit-suggester
这里也检测出了脏牛提权漏洞
在poc文件夹中直接make,生成一个dcow
直接运行,可以看到返回了一个新的密码
通过su切换到root,然后输入刚才返回的密码就可以直接登录了
git第二个poc下来使用gcc编译dirty.c文件
gcc -pthread dirty.c -o drty -lcrypt
运行dirty,成功后回提示输入新密码,且生成了一个名为firefart的新root权限用户
成功后回生成一个passwd的备份文件在/tmp下的passwd.bak文件
这时候我们查看/etc/passwd会发现多了两条数据
登录,查看id