Aurillium/public-passwd

GitHub: Aurillium/public-passwd

利用CVE-2026-46333和CVE-2026-31431漏洞,在无root权限下更改任意用户密码的工具。

Stars: 0 | Forks: 0

# 公共 passwd 利用 CVE-2026-46333 和 CVE-2026-31431 在无需提升至 root 权限的情况下更改任意用户密码。 ## 用法 ``` python passwd.py ``` 你也可以不带参数运行命令以查看 shadow 文件中当前的哈希值。 ## 截图 image image ## 工作原理 CopyFail (CVE-2026-31431) 及类似漏洞允许向操作系统上任何你有读取权限的文件写入 4 字节。这通常意味着你无法修改那些你无权读取的文件,例如 PAM 规则或 shadow 文件。你可以利用 CopyFail 提升至 root 权限,之后便可随意修改任意文件(已有大量 PoC 实现,包括我自己的 [RootRemover](https://github.com/Aurillium/RootRemover)),但如果我们希望在不提升权限的情况下修改其他文件呢? CopyFail 只需要一个文件描述符即可工作。大多数 PoC 会打开一个文件并使用其文件描述符,然而我们其实可以从其他任何地方获取它。这就引出了 CVE-2026-46333。 CVE-2026-46333 能够从 `chage` 或 `ssh-keysign` 中窃取对 root 可读文件的文件描述符。由于我们需要 `/etc/shadow` 以便修改密码,我们重点关注 `chage`。使用 `pidfd_getfd` 来窃取 `/etc/shadow` 的文件描述符,是因为在其执行过程中,有一瞬间 UID 会被设置为执行该命令的用户(这使得 `pidfd_getfd` 可行),但由于它设置了 SUID 位,因此它之前已经以 root 权限打开了 `/etc/shadow`,然后才降低到我们用户的权限。 此文件描述符是 `O_RDONLY` 模式,即只读,然而因为我们拥有 CopyFail,这无关紧要,我们可以将其提升为写入权限。我们只需将文件描述符传递给 CopyFail,并像使用任何其他可读文件一样利用该漏洞。 ## 重要注意事项 - 如果你的用户在 /etc/shadow 中的位置过于靠后,此操作会失败。 - 该用户现有的盐值会被用于新密码,如果你确实将此工具用作恢复手段(为何?),你会需要之后使用 `passwd` 再次更改密码。 - 新密码在重启后将被清除,同样,在获得已知密码后使用 `passwd` 设置可以解决此问题。 - 仅适用于受 CVE-2026-46333 和 CVE-2026-31431 影响的系统。
标签:CVE漏洞, Linux系统安全, PoC概念验证, shadow文件修改, 代码生成, 凭据访问, 威胁模拟, 安全漏洞, 密码更改, 文件描述符操作, 无提权攻击, 渗透测试工具, 系统认证, 逆向工具