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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2025-4138_tarfile_filter_bypass — CVE-2025-4138 - Python 在提取目录外任意文件写入 | Kitploit
工具/GitHubGitHub/thefizzyfish/cve-2025-4138_tarfile_filter_bypass
Payload生成漏洞分析漏洞利用Web应用程序漏洞利用CTF渗透测试
GitHubthefizzyfish/cve-2025-4138_tarfile_filter_bypass

CVE-2025-4138_tarfile_filter_bypass

CVE-2025-4138 - Python 在提取目录外任意文件写入

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
查看仓库
3106个月前尚未审核

CVE-2025-4138 — Python tarfile filter="data" 绕过

通过 PATH_MAX 符号链接链在提取目录之外写入任意文件。

受影响版本

  • Python 3.12.0 – 3.12.10
  • Python 3.13.0 – 3.13.3
  • 在 3.12.11 / 3.13.4 中修复

致谢:

报告者:Caleb Brown (Google)

工作原理

Python 的 tarfile 数据筛选器使用 os.path.realpath() 验证符号链接目标。当解析后的路径超过 PATH_MAX(Linux 上为 4096 字节)时,realpath() 会静默停止解析并追加剩余组件——包括 ../——作为字面字符串。筛选器看到的是安全路径,而内核遵循实际的遍历路径。

该漏洞构造了一个包含四个阶段的 tar 包:

  1. 符号链接链 — 16 级长目录(每级 247 个字符)和短符号链接别名(a→ddd...,b→ddd...)。将解析后的路径膨胀到约 3968 字节。
  2. 枢轴符号链接 — 链末尾的 ../ × 16。realpath() 溢出,无法解析。内核向回走到提取根目录。
  3. 逃逸符号链接 — 通过枢轴路径向上到 /,再向下到目标目录。
  4. 载荷文件 — 通过逃逸符号链接以 root 权限写入目标路径。

用法

为 root 用户添加/替换 authorized_keys

在 /tmp 中创建 SSH 密钥

root@kitploit:~
ssh-keygen -t ed25519 -f /tmp/key -N ""

创建 evil.tar 文件

root@kitploit:~
python3 CVE-2025-4138_tarfile_filter_bypass.py \
    -o evil.tar \
    -t /root/.ssh/authorized_keys \
    -p /tmp/key.pub \
    -m 0600
标志描述
-o输出 tar 路径
-t

参考

  • NVD — CVE-2025-4138
  • GHSA-hgqp-3mmf-7h8f

仅限授权的安全测试和 CTF 使用。

下载工具
目标上要写入文件的绝对路径
-p用作载荷内容的本地文件
-m八进制文件权限(默认:0644)