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 文件中当前的哈希值。
## 截图
## 工作原理
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 影响的系统。
## 工作原理
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文件修改, 代码生成, 凭据访问, 威胁模拟, 安全漏洞, 密码更改, 文件描述符操作, 无提权攻击, 渗透测试工具, 系统认证, 逆向工具