CVE-2016-5195 DirtyCow 脏牛提权

本文涉及的产品
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
可观测监控 Prometheus 版,每月50GB免费额度
简介: 脏牛(Dirty COW,编号:CVE-2016-5195)是2016年10月18日被曝出的存在于Linux内核中的一款0day漏洞。因为此漏洞是在Linux内核的内存子系统在处理写时拷贝(Copy-on-Write)时发生的,而又给Linux内核的使用带来烦恼,所以将其命名为"Dirty COW"。

声明

请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。

一、漏洞原理


Linux内核的内存子系统在处理写入时复制(copy-on-write, COW)时产生了竞争条件(race condition)。恶意用户可利用此漏洞,来获取高权限,对只读内存映射进行写访问。(A race condition was found in the way the Linux kernel’s memory subsystem handled the copy-on-write (COW) breakage of private read-only memory mappings.)

竞争条件,指的是任务执行顺序异常,可导致应用崩溃,或令攻击者有机可乘,进一步执行其他代码。利用这一漏洞。

二、漏洞概述及成因


该漏洞的原因是get_user_page内核函数在处理Copy-on-Write(以下使用COW表示)的过程中,可能产出竞态条件造成COW过程被破坏,导致出现写数据到进程地址空间内只读内存区域的机会。当我们向带有MAP_PRIVATE标记的只读文件映射区域写数据时,会产生一个映射文件的复制(COW),对此区域的任何修改都不会写回原来的文件,如果上述的竞态条件发生,就能成功的写回原来的文件。比如我们修改su或者passwd程序就可以达到root的目的。


三、漏洞影响范围


Linux kernel >= 2.6.22(2007年发行,到2016年10月18日才修复)


四、先决条件


一个 CVE-2016-5195 易受攻击的系统

该程序已成功用于:

  • RHEL7 Linux x86_64
  • RHEL4(4.4.7-16)
  • Debian 7("wheel")
  • Ubuntu 14.04.1 LTS
  • Ubuntu 14.04.5 LTS
  • Ubuntu 16.04.1 LTS
  • Ubuntu 16.10
  • Linux Mint 17.2

并编译:

铿锵版本 4.0.0;

gcc 版本 6.2.0 20161005 (Ubuntu 6.2.0-5ubuntu12)

gcc 版本 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.1)

gcc 版本 4.8.5 20150623(红帽 4.8.5-4)(GCC);

gcc 版本 4.8.4 (Ubuntu 4.8.4);

gcc 版本 4.8.2 (Ubuntu 4.8.2-19ubuntu1)

gcc 版本 4.7.2 (Debian 4.7.2-5);

gcc 版本 4.4.7(带有“旧”版本)


五、漏洞危害


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


六、本地复现


方法一

本地环境:Ubuntu 14.04.4 LTS

查看系统版本以及gcc版本是否在漏洞范围内

gcc -v

image.png

下载exphttps://github.com/gbonacini/CVE-2016-5195

image.png

使用 g++ -Wall -PEDANTIC -O2 -std=c++11 -pthread -o dcow dcow.cpp -lutil 或者直接输入 make 进行编译成可执行文件


接下来去执行./dcow -s

image.png

查看当前用户 id / whoami


方法二:

下载exphttps://github.com/FireFart/dirtycow

image.png

使用如下命令进行编译 gcc -pthread dirty.c -o exp -lcrypt

然后执行 ./exp 或者 ./exp new_password

image.png

执行完成,查看当前用户权限

image.png

cat /etc/passwd

image.png

成功提升到root权限!用户名为 firefart


漏洞深度分析请参考链接:https://www.anquanke.com/post/id/84851


总结


   原理是利用exp获取了写入权限后,对/etc/passwd进行备份,然后对/etc/passwd进行重写,修改账户权限。优点方便快速。缺点受限与环境影响。某些环境下会失败。如果失败还是使用官方放出的exp,对/etc/passwd进行写入,写入前一定要记得先备份!

目录
相关文章
|
NoSQL 安全 网络协议
|
5G 数据安全/隐私保护
5G终端标识SUPI,SUCI及IMSI解析
IMSI,SUPI,SUCI均为UE终端标识,区别在于IMSI为LTE终端标识,SUPI为5G非加密终端标识,一般等同于IMSI,SUCI为5G加密终端标识,需要解密后才能得到SUPI。
3267 0
5G终端标识SUPI,SUCI及IMSI解析
|
Prometheus 监控 安全
SpringBoot Actuator未授权访问漏洞的解决方法
SpringBoot Actuator未授权访问漏洞的解决方法Actuator 是 SpringBoot 提供的用来对应用系统进行自省和监控的功能模块,借助于 Actuator 开发者可以很方便地对应用系统某些监控指标进行查看、统计等。
29421 0
|
11月前
|
JavaScript 前端开发 测试技术
如何测试 CORS 是否正常工作?
通过以上多种方法的综合测试,可以全面地检查 CORS 是否正常工作,及时发现和解决跨域资源共享中可能存在的问题,确保不同源的网页和服务器之间能够正常地进行数据交互。
1101 60
|
JSON 开发框架 网络安全
[网络安全] Dirsearch 工具的安装、使用详细教程
[网络安全] Dirsearch 工具的安装、使用详细教程
7575 0
|
关系型数据库 MySQL 数据库
MySQL用户权限管理你知道多少?
MySQL用户权限管理你知道多少?
223 0
|
存储 安全 Shell
CVE-2021-21972-VMware vCenter漏洞学习
CVE-2021-21972-VMware vCenter漏洞学习
986 0
CVE-2021-21972-VMware vCenter漏洞学习
|
安全 Java Python
能让你躺着挖洞的BurpSuite插件
能让你躺着挖洞的BurpSuite插件
903 0
|
Linux 数据处理 Windows
探索Linux中的hexdump命令:数据处理的瑞士军刀
`hexdump`是Linux下的命令行工具,用于以十六进制格式显示和解析二进制文件内容,适用于分析文件结构、查找特定字节序列。它支持多种显示格式(如八进制、十进制)、数据分组和过滤功能。常用参数包括`-C`(混合十六进制和ASCII显示)、`-d`(十进制格式)、`-o`(八进制格式)、`-s`(跳过字节)、`-n`(显示字节数)。通过与`grep`等工具结合使用,可实现更复杂的任务。注意文件大小和选择合适显示格式,对于大文件使用`-n`限制输出。
|
存储 安全 数据安全/隐私保护
Windows内存取证-中等难度 -上篇
此篇文章,主要学习到windows内存取证知识,此次学习将有3个场景,涉及内网横向域控等