脏牛提权(Dirty COW)

漏洞概述

       脏牛提权(Dirty COW,CVE-2016-5195)是Linux内核中一个基于写时复制(COW)竞态条件的漏洞,允许低权限用户通过竞争内存页的写权限,修改受保护的只读文件(如/etc/passwd),进而将权限提升至root。

漏洞原理与触发条件

  1. 写时复制(COW)机制
           Linux内核通过COW技术优化内存使用:当多个进程共享同一块内存时,只有某个进程尝试修改内容时,内核才会复制该页到新内存区域并标记为可写,原始页仍保持只读。例如,进程A和B共享内存页X,当A修改X时,内核会复制X为X'并允许A写入,而B继续读取原始X。

  2. 竞态条件漏洞
         脏牛漏洞利用了COW过程中的竞态条件:

    • 线程A:对只读内存页发起写操作,触发COW机制,内核开始复制新页。
    • 线程B:在复制完成前,通过madvise(MADV_DONTNEED)系统调用强制释放原始页的引用,导致内核错误地将原始页标记为可写。
      通过反复操作,攻击者可绕过COW保护,直接写入原始只读页。
  3. 漏洞触发条件

    • 内核版本:受影响版本为Linux内核≥2.6.22(2007年发布),修复于2016年10月18日发布的4.8.3及以上版本。
    • 本地访问权限:攻击者需先获得目标系统的局部权限(如普通用户账户)。
    • 可写映射文件:需存在一个可写的映射文件(如拥有SUID/SGID权限的可执行文件)作为攻击载体。

漏洞利用步骤

  1. 选择攻击工具
    常用公开工具包括:
    • dirty.c:通过覆盖/etc/passwd文件中的root密码字段,创建新用户并赋予root权限。
    • 40616.c:利用类似原理,通过多线程竞争修改内存页权限。
    • dcow.cpp:C++实现的漏洞利用程序,支持通过HTTP传输和编译执行。
  2. 编译与执行
    dirty.c为例:
    gcc -pthread dirty.c -o dirty -lcrypt  # 编译生成可执行文件
    ./dirty my-new-password               # 运行程序并设置新密码
    程序会:
    • 备份原始/etc/passwd/tmp/passwd.bak
    • 修改文件中的root密码字段,插入新用户(如firefart)。
    • 提示用户通过su firefart或SSH登录新账户。
  3. 提权验证
    执行su rootid命令验证权限:
    su root          # 输入新设置的密码
    id               # 若输出`uid=0(root)`,则提权成功

漏洞危害与防御措施

  1. 危害范围
    • 全版本Linux系统:包括桌面版、服务器版及Android设备(因基于Linux内核)。
    • 权限提升:低权限用户可绕过安全限制,执行任意命令或修改系统配置。
    • 持久化控制:通过修改系统文件(如/etc/sudoers)实现长期驻留。
  2. 防御措施
    • 升级内核:将内核升级至4.8.3及以上版本,或应用厂商提供的补丁。
    • 限制敏感文件权限:通过chmod减少非特权用户对/etc/passwd/etc/shadow等文件的访问权限。
    • 使用安全工具:部署漏洞扫描工具(如Linux Exploit Suggester)定期检测系统风险。
    • 最小权限原则:避免为普通用户分配不必要的SUID/SGID权限。

实际案例与复现

  1. VulnHub靶机复现
    在靶机lampiao中,攻击者通过以下步骤利用脏牛漏洞:
    • 使用nmap扫描目标端口,发现Drupal CMS存在远程代码执行漏洞(CVE-2018-7600)。
    • 通过Metasploit模块drupal_drupalgeddon2获取初始Shell(用户权限为www-data)。
    • 上传dcow.cpp并编译执行,成功提权至root:
      g++ -Wall -pedantic -O2 -std=c++11 -pthread -o dcow dcow.cpp -lutil
      ./dcow                              # 运行后提示输入新密码
      su root                             # 使用新密码切换至root
  2. 企业环境防御建议
    • 补丁管理:建立自动化补丁更新机制,确保内核版本及时升级。
    • 入侵检测:部署文件完整性监控工具(如AIDE),实时监测/etc/passwd等关键文件变更。
    • 用户隔离:通过容器化技术(如Docker)限制用户权限,减少攻击面。

 结语     

坚持你所热爱的

热爱你所坚持的

剩下的交给时间就好

!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT 青年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值