-->
当前位置:首页 > 实验 > 正文内容

dirtycow脏牛漏洞提权复现实验

Luz4年前 (2020-12-17)实验3544

一、实验目的

  • 了解脏牛漏洞的成因及其危害

  • 脏牛漏洞的复现与权限获取

二、实验原理

1.脏牛漏洞(dirtycow):

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

  漏洞编号:CVE-2016-5195
  漏洞类型:内核竞态条件漏洞
  漏洞危害:本地提权
  影响范围:Linux kernel>2.6.22

  漏洞影响:

  • 1、低权限的本地用户可以使用此漏洞获取写访问权限,修改内存映射,达到提权目的。

  • 2、该漏洞允许攻击者使用本地账户修改磁盘上的二进制文件,绕过标准权限的限制,这些权限机制通常用于防止修改没有适当的权限集。

三、实验环境

操作系统
  操作机:Linux_Ubuntu
  操作机默认用户名:hy  密码:123456

四、实验步骤

步骤1:漏洞复现前的准备工作

1.1 以hongya用户进入系统后,先查看系统版本。
  在桌面上按 ctrl+alt+F2 进入命令行模式。

  • cat /proc/version

 

图1

  这个版本是存在脏牛漏洞的。

  1.2 切换到 root 用户。

  • sudo su root

  • 密码:123456

 

图2

  1.3 创建一个文件 abc,并填写内容"123"

  • touch abc

  • echo "123" > abc

 

图3

  1.4 查看该文件的权限。

  • ll

  hy用户没有文件abc的写入和执行权限。

 

图4

 

步骤2:漏洞复现
  2.1 切换回 hy 用户。

  • su hy

 

图5

  2.2 尝试将文字"qwe"写入文件abc中。

  • echo "qwe" > abc

  显示没有权限,说明hongya用户不能写入。

 

图6

  2.3 编译 main.c,并生成可执行文件 hy。

  • gcc main.c -lpthread -o hy

 

图7

  2.4 执行程序,将"qwe"写入文件abc中。

  • ./hy abc qwe

  过程需要一些时间,请耐心等待。执行结束后可以看到hy用户成功修改了root权限的文件内容。

 

图8

  于是只要修改 /etc/passwd,把当前用户的 uid 改成 0 就可以作为 root 登录了。

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。