Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

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

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

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

工具目录

分类

查看所有分类
Loading categories
DirtyFrag-go — dirtyfrag(CVE-2026-43284 / CVE-2026-43500)的 Go 语言实现 | Kitploit
工具/GitHubGitHub/nonameuserosint-hue/dirtyfrag-go
权限提升漏洞利用二进制利用
GitHubnonameuserosint-hue/dirtyfrag-go

DirtyFrag-go

dirtyfrag(CVE-2026-43284 / CVE-2026-43500)的 Go 语言实现

查看仓库
144个月前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

dirtyfrag-go

两个漏洞。一个 Shell。零磁盘写入。

dirtyfrag(CVE-2026-43284 / CVE-2026-43500)的 Go 移植版。

工作原理(简述)

这类漏洞位于 Linux 内核的 XFRM 子系统。当文件页被 splice() 送入管道,再送入 ESP 加密的套接字时,内核会在原地解密 ESP 载荷——直接写入源文件的页缓存页。文件是只读的,但页缓存不是。

dirtyfrag 利用这一原语串联了两个独立的漏洞:

CVE-2026-43284 - ESP/XFRM 路径

通过 NETLINK_XFRM 安装 48 条 XFRM 传输模式 SA。每条 SA 在其 ESN 重放状态的 seq_hi 字段中编码 4 字节的 shellcode 载荷。vmsplice + splice 链会为每条 SA 触发 ESP 原地解密,将这 4 字节写入 /usr/bin/su 的页缓存条目。48 次触发,写入 192 字节,无需竞态条件。

CVE-2026-43500 - RxRPC/rxkad 路径

离线暴力破解 3 个 PCBC(fcrypt) 会话密钥,这些密钥解密后会产生目标字节序列。对每个密钥,通过 AF_RXRPC 套接字触发一次,将 /etc/passwd 中的 root 条目修补为 root::0:0(nullok)。随后 su - 将接受空密码。

两条路径都在用户 + 网络命名空间(CLONE_NEWUSER | CLONE_NEWNET)中运行,以避免在宿主机上要求 CAP_NET_ADMIN。

用法

go build -o dirtyfrag-go .
./dirtyfrag-go

# Force a specific path
./dirtyfrag-go --force-esp
./dirtyfrag-go --force-rxrpc

# Verbose output
./dirtyfrag-go -v

该二进制会先尝试 ESP 路径。如果之后 /usr/bin/su 未被修补,则回退到 RxRPC 路径(最多重试 3 次)。成功后会通过全新 PTY 进入 root shell。

清理

该漏洞利用只触及页缓存。磁盘上的二进制文件和 /etc/passwd 均不会被改动。重启即可恢复一切。如需在不重启的情况下立即释放缓存:

echo 1 | tee /proc/sys/vm/drop_caches

系统要求

  • Linux - 未修补的内核(见下文)
  • 无需外部工具或预构建载荷 - 纯 Go,单个静态二进制
  • 内核模块:esp4、esp6(ESP 路径)和/或 rxrpc(RxRPC 路径)

受影响的内核

补丁之前的所有内核:

  • CVE-2026-43284: https://lists.openwall.net/netdev/2026/05/06/112
  • CVE-2026-43500: https://lists.openwall.net/netdev/2026/05/06/114

缓解措施

rmmod esp4 esp6 rxrpc
printf 'install esp4 /bin/false\ninstall esp6 /bin/false\ninstall rxrpc /bin/false\n' \
  > /etc/modprobe.d/dirtyfrag.conf

与原版的对比

C(原版)Go
外部依赖无无
单文件否否
静态二进制是是
RxRPC 路径是是
ESP 路径是是
命名空间隔离unshare()通过 Cloneflags 重新执行

Go 运行时从一开始就是多线程的,因此不允许 unshare(CLONE_NEWUSER)。Go 移植版会将自身作为子进程重新执行,并设置 SysProcAttr.Cloneflags,这会在 Go 运行时初始化之前调用 clone()。

参考

  • V4bel/dirtyfrag - 原始 C PoC
  • CVE-2026-43284 - NVD
  • CVE-2026-43500 - NVD

致谢

  • V4bel - 漏洞发现与原始 PoC
下载工具