cyber-joker/copy-fail-python

GitHub: cyber-joker/copy-fail-python

CVE-2026-31431 的 Python 移植版,通过覆写 su 二进制文件页缓存实现本地提权。

Stars: 0 | Forks: 0

# copyfail_su.py [badsectorlabs/copyfail-go](https://github.com/badsectorlabs/copyfail-go) (CVE-2026-31431) 的 Python 移植版。仅限 Linux;需要 Python 3.10+ (`os.splice`)。 ## 它是如何获取 root 权限的(重要) 本工具**不**使用 `/etc/passwd` 页缓存技巧。 - 它会使用内嵌的 shellcode(与 Go `main.go` 中的 payload 相同)覆写 **setuid `su` 二进制文件的页缓存**,然后**执行 `su`**。 - 提权来源于以 setuid root 程序的身份运行**已损坏的 `su` 缓存镜像**,而不是通过 `/etc/passwd` 让 `getpwnam()` 认为你的 UID 是 `0`。 其他针对同一 CVE 的公开 Python PoC 可能会修补**`/etc/passwd`** 页缓存,然后指示你运行 `su `。与本脚本相比,那是**不同的目标文件和不同的后续操作**。 ## 用法 仅供授权测试——请仅在你拥有或获得明确许可进行评估的主机上使用。 ``` chmod +x copyfail_su.py # 交互式流程(与不带 --exec 的 copyfail-go 思路相同) ./copyfail_su.py --backup /tmp/su.bak # 以提升权限运行另一个程序(将路径作为 argv 传递给 su;使用 exec-argv1 payload) ./copyfail_su.py --backup /tmp/su.bak --exec /full/path/to/binary ``` 成功运行后,请恢复真实的 `su`。 ## 不带 `--backup` 的恢复方法 该 PoC 会损坏 `/usr/bin/su` 的**页缓存**。在验证或重新安装之前,不要认为磁盘上的文件仍然可信。 1. **重新安装拥有 `/usr/bin/su` 的软件包**(先查找该包,然后重新安装): - **RPM 系:** `rpm -qf /usr/bin/su` 然后 `sudo dnf reinstall shadow-utils`(使用报告的软件包名称)。 - **Debian/Ubuntu:** `dpkg -S /usr/bin/su` 然后 `sudo apt install --reinstall `。 2. **验证:** `sudo rpm -V ` 以检查 `/usr/bin/su` 是否存在意外更改,或在 Debian 系系统上使用 `debsums`。 3. **可选:** 重新安装后重启,以避免残留的过期缓存问题。 4. **如果你无法以 root 身份重新安装:** 使用恢复引导、Live USB,或者从已知良好的同发行版/版本/架构镜像中替换 `/usr/bin/su`;确保其所有权为 **`root:root`** 且权限模式为 **`4755`** (`-rwsr-xr-x`)。 ## 参考 - [copyfail-go](https://github.com/badsectorlabs/copyfail-go) - [copy.fail](https://copy.fail)
标签:CVE-2026-31431, DNS 解析, os.splice, Page Cache, PoC, Python, Root提权, setuid, Shellcode, Web报告查看器, 内存破坏, 内存缓存污染, 协议分析, 子域名枚举, 技术调研, 数据展示, 无后门, 暴力破解, 本地提权, 权限提升, 系统安全, 红队, 网络安全, 逆向工具, 隐私保护, 验证脚本, 高危漏洞