0xShe/CVE-2026-31431

GitHub: 0xShe/CVE-2026-31431

针对 CVE-2026-31431 的 Linux 内核 AF_ALG 接口本地提权利用工具,通过 splice 注入覆盖 /bin/su 认证逻辑获取 root shell。

Stars: 19 | Forks: 11

作者:0xShe Language / 语言 - English: - 中文: 1 CVE-2026-31431 内核提权工具指南 0x01 快速开始 某些目标环境没有安装 Python,因此该提权逻辑被重写为 C 语言。 1. 编译 在您的 Linux 机器或 WSL 上运行以下命令(建议使用 -static 以避免 GLIBC 版本问题): ``` gcc -static exploit.c -o exploit ``` 2. 部署与执行 将生成的二进制文件上传到目标机器: ``` chmod +x exploit ./exploit ``` 如果漏洞利用成功,程序将自动执行 su 并直接生成一个 root shell,无需输入密码。 0x02 提权逻辑:它是如何工作的? 此漏洞利用了 Linux 内核的 AF_ALG 接口(Kernel Crypto API)中的一个逻辑缺陷。 1. 创建 Crypto Socket 程序使用 socket(AF_ALG, ...) 创建一个 AEAD(Authenticated Encryption with Associated Data)套接字。 2. 内存注入(Splice) 通过利用 Linux 的 splice 系统调用,可以将来自文件描述符(此处为 /bin/su)的数据直接重定向到内核加密缓冲区。 3. Payload 覆盖 使用特定的内存偏移量,该漏洞利用程序将 /bin/su 的部分身份验证逻辑替换为提权 payload(一个启动 /bin/sh 的最小 ELF 程序)。 4. 触发提权 在内核完成一系列加密操作后,内存中的 su 进程已经被篡改。当最终执行 system("su") 时,系统实际上运行的是被修改过的 root shell payload。 0x03 故障排除指南:为什么仍然提示需要密码? 在调试过程中,如果程序输出 Exploit finished,但运行 su 仍然需要密码,问题通常是由以下细节之一引起的。 1. 关键的 MSG_MORE 标志 这是最常见的失败点。sendmsg 调用必须包含 MSG_MORE 标志。 - 原因: 此标志告诉内核还有更多数据将要发送,防止加密缓冲区过早完成定稿。 - 后果: 如果没有此标志,内核会立即关闭当前的 crypto context。因此,后续的 splice 注入无法进入正确的内核缓冲区,导致覆盖无法进行。 2. 关联数据长度(Assoclen) 内核对 AEAD 关联数据的对齐和长度检查极其严格。 - 陷阱: 如果 C 代码中的 ASSOCLEN 设置为 4 字节,而内核期望的是 8 字节(反之亦然),内核可能会抛出无效参数错误,或者默默地完全跳过注入逻辑。 3. 文件偏移量重置 在修改 /bin/su 的循环中,每次 splice 操作都必须从偏移量 0 开始读取。 - 陷阱: 如果没有将 off_su 显式重置为 0,splice 的行为将类似于 read() 并继续推进文件指针。在第二次迭代中,注入的数据将发生错位,这可能会损坏 su 或破坏漏洞利用逻辑。 4. 内核补丁 某些系统可能已经应用了静默安全补丁。这是在多台机器上测试时确认的——某些目标已经收到了非官方或向后移植的修复。 0x04 注意事项 - 内核版本: 此漏洞主要影响早期的 5.x Linux 内核(例如 Ubuntu 20.04 的初始版本)。如果内核已被修补,此方法将不再有效。 - 路径差异: 不同的 Linux 发行版可能将 su 存储在不同的位置(/bin/su 或 /usr/bin/su)。代码会尝试自动检测正确的路径,但如果两者都不存在,请使用 which su 手动验证并相应地修改代码。 - 免责声明: 本文严格仅用于技术研究和教育目的。请勿将其用于非法活动。用户需对滥用此工具造成的任何法律后果自行承担责任。
标签:0xShe, AF_ALG, Crypto API, CVE-2026-31431, GLIBC, Kernel Exploit, Linux提权, splice系统调用, Web报告查看器, 二进制漏洞利用, 内存篡改, 内核漏洞, 协议分析, 安全渗透, 客户端加密, 数据展示, 本地提权, 权限提升, 漏洞复现, 红队, 网络安全, 隐私保护, 静态编译