学习该漏洞的原因:
总是看到圈子里一位老哥发文章使用这个漏洞来提权, 进过测试发现 CentOS 比较难提取, 而 Ubuntu 是比较好提权的.
漏洞范围:
Linux kernel>= 2.6.22(2007 年发行, 到 2016 年 10 月 18 日才修复)
危害:
低权限用户利用该漏洞可以在众多 Linux 系统上实现本地提权
简要分析:
该漏洞具体为, get_user_page 内核函数在处理 Copy-on-Write(以下使用 COW 表示) 的过程中, 可能产出竞态条件造成 COW 过程被破坏, 导致出现写数据到进程地址空间内只读内存区域的机会. 修改 su 或者 passwd 程序就可以达到 root 的目的. 具体分析请查看官方分析.
测试工具:
官方放出的 EXP: https://github.com/dirtycow/dirtycow.github.io
提权为 root 权限的 EXP 一: https://github.com/FireFart/dirtycow
提权为 root 权限的 EXP 二: https://github.com/gbonacini/CVE-2016-5195
测试过程 (EXP 一):
本次环境使用 bee-box 虚拟机进行测试.
假设一开始获得的是普通用户 bee 的权限.
1. 使用 uname -a 命令查看 Linux 内核信息, 发现在脏牛漏洞范围内, 可以进行测试.
2. 将 exp 一下载到本地, 使用 gcc -pthread dirty.c -o dirty -lcrypt 命令对 dirty.c 进行编译, 生成一个 dirty 的可执行文件.
3. 执行./dirty 密码命令, 即可进行提权.
4. 此时使用上图中的账号密码即可获取 root 权限.
测试过程 (EXP 二):
由于 bee-box 的 gcc 版本较低, 就不进行具体的测试了, 具体步骤如下:
1. 下载 exp 到靶机, 解压并进入文件夹, 执行 make 后会生成一个 dcow 的可执行文件.
2. 执行./dcow -s 如果成功的话会返回一个 root 的 shell, 失败则返回 fail.
总结:
内核版本需要在 2.6.22 以上, 并且未打补丁
gcc 版本可能有要求 (exp2), 需先升级再测
成败取决于环境
由于寝室快要断电了, 我就仅仅复现了一下.
link: https://www.jianshu.com/p/df72d1ee1e3e
来源: http://www.bubuko.com/infodetail-2988973.html