Aurillium/RootRemover
GitHub: Aurillium/RootRemover
利用 CVE-2026-31431 在無需已知密碼的情況下臨時移除 root 密碼,實現本地提權。
Stars: 1 | Forks: 0
# RootRemover (CVE-2026-31431)
临时移除 root 密码,利用 CVE-2026-31431 实现在不知道当前用户密码的情况下提权至 root。
请负责任地使用,仅限于您被授权测试的系统。目前似乎仅在 Debian 衍生版上有效。
实际的漏洞利用代码来自 [rootsecdev](https://github.com/rootsecdev/cve_2026_31431) 的仓库,我只是出于以下列出的原因修改了写入的字节。
此 PoC 的原理本质上是在 /etc/passwd 中将你的 UID 替换为全 0,从而有效地赋予你 root 权限。而本方法改为移除 root 的密码,因此当你运行 `su` 时,即可直接获得 root 权限。这种方式保持了你的用户身份不变以维持系统稳定性,并授予你 root 的 GID,但需注意的是,在清理之前,机器上的任何用户都可以进行提权。
此方法的优点:
- 无需知道当前用户的密码
- 适用于任何 UID(现有的 PoC 也可以修改以适用于少于 4 位数的 UID,并可以通过链式操作处理更多位数)
- 保持用户原有的 UID 不变(保证了在该用户下运行其他任务的系统稳定性等,避免开始以 UID 0 写入文件)
此方法的缺点:
- root 的密码哈希不能存在于 /etc/passwd 中(这本身就是一个安全隐患,意味着如果你无法使用此脚本,可能依然可以通过哈希破解来获取密码)
- root 的密码字段不能使用 '`*LK*`' 或 '`*NP*`'(可以通过链式写入来修复,我只是还没做)
- 提权行为可能更容易通过 `su` 的命令行被识别(不带参数始终意味着切换到 root,而 UID 补丁 PoC 在日志中看起来就像是切换到自己的用户,因为实际情况就是如此。这也是位于 https://copy.fail 的第一个 PoC 共有的缺陷,尽管在那边似乎是可以修复的)
- 任何人都可以以 root 身份登录,而在之前的版本中你仍然需要自己的密码。这种设计更适合当你获得了类似 `www-data` 的 shell 时使用,而不是在你已知密码的机器上。
- 由于系统优先使用 /etc/passwd 还是 /etc/shadow 的机制存在差异,目前主要只能在基于 Debian 的操作系统上运行(或许可以修复,但可能非常耗时)
在我看来,此方法的优点大于缺点,因此我决定编写它。
标签:Cutter, CVE-2026-31431, Debian, /etc/passwd, PoC, RootRemover, Root提权, UID/GID, Web报告查看器, 子域名枚举, 密码修改, 提权脚本, 暴力破解, 本地提权, 权限升级, 权限绕过, 漏洞复现, 系统安全, 网络安全, 隐私保护