ahmedreda38/CVE-2025-47273-PoC
GitHub: ahmedreda38/CVE-2025-47273-PoC
针对 setuptools 78.1.0 版本中 `package_index` 模块路径遍历漏洞的概念验证,演示如何利用 `os.path.join()` 的绝对路径处理特性实现任意文件写入。
Stars: 0 | Forks: 0
# CVE-2025-47273:setuptools.package_index 中的路径遍历漏洞
## 免责声明
此概念验证(PoC)仅用于教育目的和经授权的安全审计。作者不对滥用此信息承担责任。未经授权访问计算机系统是非法和不道德的。
## 漏洞分析
CVE-2025-47273 是在 `setuptools` 库(v78.1.0 及更早版本)的 `package_index` 模块中发现的路径遍历漏洞。该漏洞允许攻击者通过向 `PackageIndex.download()` 方法提供特制的 URL 来执行任意文件写入。
### 根本原因:os.path.join() 行为
该缺陷源于 Python `os.path.join()` 函数的一个常见陷阱。根据 Python 文档:
在受影响版本的 `setuptools` 中,目标文件名是通过从 URL 中提取名称并将其与临时目录拼接来确定的:
```
# setuptools/package_index.py
filename = os.path.join(tmpdir, name)
```
如果攻击者提供的 URL 其文件名部分(经过 URL 解码后)以正斜杠 `/` 开头,`os.path.join` 会丢弃 `tmpdir` 前缀并返回 URL 中提供的绝对路径。
### 漏洞流程图
```
[ Attacker-Controlled URL ]
http://attacker.local/%2fetc%2fpasswd
|
| 1. URL Decoding
v
[ Decoded Filename (name) ]
"/etc/passwd"
|
| 2. Vulnerable Function Call
v
os.path.join("/tmp/download_dir", "/etc/passwd")
|
| 3. Python os.path.join Logic
v
[ Resulting Path (filename) ]
"/etc/passwd" <-- /tmp/download_dir is discarded!
```
## 技术影响
由于目标路径可以被操控为绝对路径,攻击者可以将任意内容写入进程具有写入权限的文件系统上的任何位置。
### 高影响场景:
1. **权限提升:** 如果使用 `setuptools` 的进程以提升的权限运行(例如,系统级安装程序),攻击者可以覆盖关键系统文件,如 `/etc/passwd`、`/etc/sudoers.d/steve` 或 `/etc/shadow`。
2. **持久化 / RCE:** 覆盖用户级配置文件(如 `~/.bashrc`、`~/.ssh/authorized_keys`)或向现有 Python 库注入代码,可能导致持久的远程代码执行(Remote Code Execution)。
## 复现
### 环境设置
该漏洞存在于 `setuptools` 版本 `78.1.0` 中。
```
pip install setuptools==78.1.0
```
### 1. 启动恶意服务器
`server.py` 脚本充当恶意包索引。无论请求路径如何,它都会提供 payload。
```
python3 server.py
```
### 2. 运行利用程序
`exploit.py` 脚本演示了该绕过,它尝试将文件写入 `/tmp/cve_2025_47273_demo`,而不是预期的临时目录。
```
python3 exploit.py
```
## 缓解措施
该漏洞已在 `setuptools` 版本 **78.1.1** 中得到解决。修复方案涉及对从 URL 派生的 `name` 变量进行严格清理,以确保其在传递给 `os.path.join()` 之前不包含前导斜杠或驱动器号。
为了保护您的环境:
```
pip install --upgrade setuptools
```
## 参考文献
- [setuptools Issue #4946](https://github.com/pypa/setuptools/issues/4946)
- [NVD - CVE-2025-47273](https://nvd.nist.gov/vuln/detail/CVE-2025-47273)
- [Huntr 赏金报告](https://huntr.com/bounties/d6362117-ad57-4e83-951f-b8141c6e7ca5)
标签:CVE-2025-47273, os.path.join, PoC, Setuptools, Web报告查看器, XXE攻击, 任意文件写入, 协议分析, 文件包含, 暴力破解, 权限提升, 漏洞分析, 网络信息收集, 路径探测, 路径遍历, 逆向工具