CVE-2016-5195 DirtyCow 脏牛提权

简介: 脏牛(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进行写入,写入前一定要记得先备份!

目录
相关文章
|
安全 开发工具 git
CTF工具隐写分离神器Binwalk安装和详细使用方法
CTF工具隐写分离神器Binwalk安装和详细使用方法
7024 0
12 个非常适合做项目的开源后台管理系统
12 个非常适合做项目的开源后台管理系统
2890 0
|
5月前
|
机器学习/深度学习 存储 弹性计算
刚刚:阿里云服务器2026最新收费价格曝光:年/月/小时价格一目了然
2026年阿里云服务器最新价格表:年付低至38元/年(轻量应用服务器),月付25元起,按量小时计费0.3375元起;覆盖中国大陆及海外多地域,含ECS、GPU(EGS)、轻量服务器全品类,支持带宽与系统盘灵活选配,并享代金券等多重优惠。
1528 9
|
Linux 开发者 云计算
linux内核符号表kallsyms简介
在使用perf排查问题时,我们经常会发现[kernel.kallsyms]这个模块。这到底是个什么东西呢?
20435 0
|
网络协议 算法 Java
基于Reactor模型的高性能网络库之Tcpserver组件-上层调度器
TcpServer 是一个用于管理 TCP 连接的类,包含成员变量如事件循环(EventLoop)、连接池(ConnectionMap)和回调函数等。其主要功能包括监听新连接、设置线程池、启动服务器及处理连接事件。通过 Acceptor 接收新连接,并使用轮询算法将连接分配给子事件循环(subloop)进行读写操作。调用链从 start() 开始,经由线程池启动和 Acceptor 监听,最终由 TcpConnection 管理具体连接的事件处理。
371 2
|
8月前
|
存储 缓存 人工智能
重复文件是怎么产生的?重复文件清理教程
重复文件是怎么产生的?重复文件清理教程
719 5
|
4月前
|
SQL 运维 容灾
别等业务中断才补坑!RTO/RPO 核心逻辑与全场景灾备架构选型全攻略
本文系统解析容灾备份核心知识:阐明其作为业务“生命线”的必要性;深度解读RTO(恢复时间目标)与RPO(恢复点目标)的定义、误区及量化方法;厘清备份(保数据)与容灾(保业务)的本质区别;详解冷备、温备、主从热备、同城双活、两地三中心六大主流架构;提供分场景选型指南与Spring Boot+MySQL实战代码,并强调演练验证与3-2-1运维法则。
1022 1
|
10月前
|
监控 安全 Linux
Linux系统提权之计划任务(Cron Jobs)提权
在Linux系统中,计划任务(Cron Jobs)常用于定时执行脚本或命令。若配置不当,攻击者可利用其提权至root权限。常见漏洞包括可写的Cron脚本、目录、通配符注入及PATH变量劫持。攻击者通过修改脚本、创建恶意任务或注入命令实现提权。系统管理员应遵循最小权限原则、使用绝对路径、避免通配符、设置安全PATH并定期审计,以防范此类攻击。
1393 1
|
网络协议 网络安全 数据库
【专栏】网络端口的奥秘,包括基本概念、技术原理和实际应用
【4月更文挑战第28天】本文深入探讨了网络端口的奥秘,包括基本概念、技术原理和实际应用。网络端口是区分网络服务的抽象概念,与TCP/IP协议密切相关。端口号范围从0到65535,知名端口常分配给标准服务,如HTTP和FTP。TCP提供可靠的数据传输,而UDP则更高效。端口还涉及端口扫描、转发和映射等高级技术。在实际应用中,端口广泛用于Web服务器、数据库通信及网络安全。随着云计算和虚拟化的兴起,端口管理变得更为复杂,对IT专业人员的技能要求提高。理解并掌握网络端口对于提升个人技能和保障网络安全至关重要。
1160 1
|
Kubernetes Cloud Native 关系型数据库
k8s 部署polardb-x集群
k8s 部署polardb-x集群
1231 11