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

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

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

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

工具目录

分类

查看所有分类
Loading categories
malicious-pdf — 生成用于渗透测试、漏洞赏金和红队测试的恶意PDF测试文件。测试PDF查看器、转换器和Web应用程序中的SSRF、XSS、XXE、NTLM凭证窃取和数据泄露。集成Burp Collaborator和Interact.sh。 | Kitploit
工具/GitHubGitHub/jonaslejon/malicious-pdf
钓鱼工具漏洞扫描器Payload生成漏洞利用Web应用程序漏洞利用数据泄露渗透测试学习与教育红队
GitHubjonaslejon/malicious-pdf

malicious-pdf

生成用于渗透测试、漏洞赏金和红队测试的恶意PDF测试文件。测试PDF查看器、转换器和Web应用程序中的SSRF、XSS、XXE、NTLM凭证窃取和数据泄露。集成Burp Collaborator和Interact.sh。

4.1k5462个月前Kitploit 审核通过

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
查看仓库

malicious-pdf.png

made-with-python OpenSSF Best Practices

恶意 PDF 生成器 ☠️

生成 67 个恶意 PDF 测试文件,用于测试 PDF 查看器、转换器和 Web 应用程序中的回呼、SSRF、XSS、XXE、NTLM 凭据窃取和数据泄露。可与 Burp Collaborator 或 Interact.sh 配合使用

用于渗透测试、漏洞赏金狩猎和/或红队活动等。创建此工具是因为我需要一个能生成大量包含各种链接的 PDF 文件的工具。仅用于教育和专业目的。

用法```

pip install -r requirements.txt python3 malicious-pdf.py burp-collaborator-url

root@kitploit:~
输出将写入 `output/` 目录,文件名为:test1.pdf, test2.pdf, test3.pdf 等。

### 选项```
--output-dir DIR    Directory to save generated PDF files (default: output/)
--no-credit         Do not embed credit/attribution metadata in generated PDFs
--obfuscate LEVEL   Obfuscation level (0-3):
                      0 = None (default)
                      1 = PDF name hex encoding + string octal/hex encoding
                      2 = Level 1 + JS bracket notation + javascript: URI case/whitespace obfuscation
                      3 = Level 2 + FlateDecode stream compression

带混淆的示例:``` python3 malicious-pdf.py https://your-interact-sh-url --obfuscate 2

root@kitploit:~
最大混淆(级别4将JS负载包装在base64解码器存根中,因此原始API调用永远不会以字面子字符串形式出现):```
python3 malicious-pdf.py https://your-interact-sh-url --obfuscate 4

目的

  • 测试接受 PDF 文件的网页/服务
  • 测试安全产品
  • 测试 PDF 阅读器
  • 测试 PDF 转换器
  • 测试服务器端 PDF 处理库(PDFBox、iText 等)
  • 测试 PDF 静态分析工具——阶段化的 JS 载荷(表单字段 /V、base64 解码器)能击败简单的 /JS 正则扫描器
  • 漏洞赏金狩猎——用于在允许 PDF 输入的程序中,在文件上传端点、PDF 转图像转换器以及文档处理流水线中发现 SSRF、XXE、盲回调以及 NTLM 泄露

致谢

  • PDF 中的不安全特性
  • Burp Suite UploadScanner
  • Bad-Pdf
  • 对恶意 PDF 文档的一次好奇探索
  • Black Hat USA 2020 演讲《便携文档缺陷 101》
  • Adobe Reader - 通过 XFA 中的 XSLT 样式表实现 PDF 回调
  • Foxit PDF Reader PoC,作者 DoHyun Lee
  • Eicar 测试文件,作者 Stas Yakobov
  • 多个 PDF 漏洞 - FormCalc 与 XXE
  • PDF - 与 Web 交互 - FormCalc 头部注入
  • Adobe Reader PDF - 客户端请求注入
  • ImageMagick - 通过 PDF 密码实现 Shell 注入
  • 便携式数据泄露 - PortSwigger 研究
  • CVE-2024-4367 - PDF.js 中的任意 JS 执行
  • PDF 文件格式安全 - Philippe Lagadec
  • CVE-2016-2175 - Apache PDFBox XXE
  • CVE-2017-9096 - iText XXE
  • CVE-2020-29075 - Acrobat Reader 静默 DNS 追踪
  • CVE-2022-28244 - Acrobat Reader CSP 绕过
  • CVE-2018-5158 - Firefox PDF.js PostScript 计算器注入

媒体报道

  • Brisk Infosec
  • Daily REDTeam
  • 恶意 PDF 文件 | 红队 | 渗透测试
  • John Hammond - PDF 文件能成为恶意软件吗?
  • Black Hat Ethical Hacking
  • 0x1 渗透测试集合
  • Security Toolkit / WADComs
  • unsafe.sh
  • Cristi Zot 在 LinkedIn 上
  • Siva R. 在 LinkedIn 上

完整测试矩阵

点击展开全部 70 个测试用例

待办:新的测试用例

  • Acrobat JS 指纹识别 API — 为 2026 年 4 月 Adobe 0day 利用链中使用的侦察/指纹识别 API 添加测试用例(参考):Collab.isDocReadOnly(文件系统探测)、app.plugIns(枚举已安装插件)、app.viewerVersion(版本指纹识别)

待办:尚未实现的混淆方法

  • 空密码 PDF 加密 — 使用空用户密码加密所有字符串/流。文档打开时无需提示,但静态分析工具无法读取内容。当前混淆中最大的缺口。参考:Didier Stevens,PDF 加密有多安全?
  • 对象流 (ObjStm) — 将 PDF 对象隐藏在压缩流容器内部。简单的解析器(包括未使用 -O 标志的 PDFiD)会完全遗漏对象。参考:PDF 规范 ISO 32000 §7.5.7
  • getAnnots() 代码存储 — 将 JavaScript 载荷分割到注释元数据字段(主题、作者)中。运行时通过 app.doc.getAnnots()[n].subject 检索并 eval。参考:Julia Wolf - 使用 getAnnots() 进行 PDF 混淆
  • 信息字典数据提取 — 将编码后的载荷存储在 /Info 尾部字段(/Title、/Author)中。运行时通过 JS 中的 info.Title 检索。参考:corkami PDF 技巧
  • AcroForm 字段值提取 — 将载荷片段存储在表单字段 /V 值中。通过 JS 中的 getField("name").value 检索。参考:corkami PDF 技巧
  • 名称树分割执行 — 将 JavaScript 分割到多个按顺序执行的 /Names 条目中。参考:

不实现

  • CVE-2023-26369 - Adobe Acrobat TTF 字体堆外写入 — 需要二进制利用(堆喷射、ROP 链、Shellcode)。无公开 PoC。无法生成简单的回调。
  • CVE-2021-28550 - Adobe Acrobat 释放后使用 — 需要二进制利用链 + 沙箱逃逸(CVE-2021-31199/31201)。无公开 PoC。无法生成简单的回调。

星标历史

星标历史图

下载工具
  • CVE-2018-20065 - PDFium 无用户手势的 URI 动作
  • ExpMon - 高级 Adobe Reader 0day 分析(2026 年 4 月) — test33_13/14/15 及混淆级别 4 的灵感来源
  • 测试文件函数CVE/参考攻击向量方法影响
    test1.pdfcreate_malpdf()CVE-2018-4993外部文件访问带有 UNC 路径的 /GoToE 动作通过文件系统的网络回调
    test1_1.pdfcreate_malpdf()CVE-2018-4993外部文件访问带有 HTTPS URL 的 /GoToE 动作通过 HTTPS 的网络回调
    test2.pdfcreate_malpdf2()XFA 表单提交表单数据泄露带有提交事件的 XDP 表单自动表单提交
    test3.pdfcreate_malpdf3()JavaScript 注入代码执行带有 app.openDoc() 的 /OpenAction外部文档加载
    test4.pdfcreate_malpdf4()CVE-2019-7089XSLT 注入带有外部 XSLT 样式表的 XFAUNC 路径回调
    test5.pdfcreate_malpdf5()PDF101 研究URI 动作/URI 动作类型DNS 预取/HTTP 请求
    test6.pdfcreate_malpdf6()PDF101 研究启动动作带有外部 URL 的 /Launch外部资源执行
    test7.pdfcreate_malpdf7()PDF101 研究远程 PDF/GoToR 动作远程 PDF 加载
    test8.pdfcreate_malpdf8()PDF101 研究表单提交带有 HTML 标志的 /SubmitForm表单数据提交
    test9.pdfcreate_malpdf9()PDF101 研究数据导入/ImportData 动作外部数据导入
    test10.pdfcreate_malpdf10()CVE-2017-10951JavaScript 执行Foxit this.getURL() 回调通过 Foxit Reader 的网络回调
    test11.pdfcreate_malpdf11()EICAR 测试AV 检测嵌入的 EICAR 字符串反病毒测试
    test12.pdfcreate_malpdf12()CVE-2014-8453FormCalc 数据泄露XFA FormCalc Post() 函数带有 cookie 的同源数据泄露
    test13.pdfcreate_malpdf13()请求注入CRLF 头部注入XFA 提交 textEncoding CRLFHTTP 头部操纵
    test14.svgcreate_malpdf14()ImageMagick Shell 注入通过 SVG/MSL 的 Shell 注入SVG-MSL 多语言文件 authenticate 属性通过 ImageMagick 的远程代码执行
    test15.pdfcreate_malpdf15()PDF 规范FormCalc 头部注入带有自定义头部的 XFA FormCalc Post()任意 HTTP 头部注入
    test16.pdfcreate_malpdf16()PDF 规范通过 GotoE 的 JavaScript带有 javascript: URI 的 /GoToE当 PDF 通过 <embed>/<object> 嵌入时的浏览器 XSS
    test17.pdfcreate_malpdf17()CVE-2014-8452XXE 注入XMLData.parse() 外部实体XML 外部实体解析
    test18.pdfcreate_malpdf18()PortSwigger 研究注释 URI 注入未转义括号通过重复的 /A 键注入 JS 动作通过 PDF-Lib/jsPDF 输出的 XSS
    test19.pdfcreate_malpdf19()PortSwigger 研究PV 自动执行/AA /PV 屏幕注释在页面可见时触发 JS自动代码执行(Acrobat)
    test20.pdfcreate_malpdf20()PortSwigger 研究PC 关闭触发/AA /PC 注释在页面关闭时触发 JS关闭时代码执行(Acrobat)
    test21.pdfcreate_malpdf21()PortSwigger 研究SubmitForm SubmitPDF带有 Flags 256 的 /SubmitForm 发送整个 PDF完整 PDF 内容泄露
    test22.pdfcreate_malpdf22()PortSwigger 研究JS submitForm()this.submitForm() 带 cSubmitAs: "PDF"PDF 内容提交(Acrobat)
    test23.pdfcreate_malpdf23()PortSwigger 研究小部件按钮注入覆盖页面的不可见 /Btn 小部件,点击时触发 JS代码执行(Chrome/PDFium)
    test24.pdfcreate_malpdf24()PortSwigger 研究文本字段 SSRF带有 submitForm() POST 的 /Tx 小部件字段通过表单数据的盲 SSRF
    test25.pdfcreate_malpdf25()PortSwigger 研究内容提取getPageNthWord() 读取所有文本并泄露渲染文本泄露
    test26.pdfcreate_malpdf26()PortSwigger 研究悬停触发鼠标进入时触发 /AA /E 注释 JS悬停时代码执行(PDFium)
    test27——已移除重复 test3(Acrobat OpenAction JS)+ test23(Chrome Widget Btn)—
    test28.pdfcreate_malpdf28()PortSwigger 研究URL 劫持未转义括号注入新的 /URI 动作通过 PDF-Lib/jsPDF 的点击重定向
    test29.pdfcreate_malpdf29()CVE-2024-4367FontMatrix 注入Type1 字体 FontMatrix 字符串跳出 c.transform()PDF.js 中的任意 JS 执行(Firefox < 126)
    test30.pdfcreate_malpdf30()PDF101 研究外部 XObject 流图像 XObject 通过 /FS /URL 从远程 URL 获取数据通过页面渲染的静默回调(无动作/JS)
    test31.pdfcreate_malpdf31()PDF101 研究线程动作带有远程 FileSpec 的 /S /Thread通过线程引用的网络回调
    test32.pdfcreate_malpdf32()PDF101 研究带打印的启动带有 /Win << /O /print >> 的 /Launch 强制远程获取通过打印操作的网络回调
    test33_1.pdfcreate_malpdf33_1()PDF101 研究JS: this.submitForm()Acrobat JS 表单提交回调Acrobat Reader
    test33_2.pdfcreate_malpdf33_2()PDF101 研究JS: this.getURL()Acrobat JS URL 获取Acrobat Reader
    test33_3.pdfcreate_malpdf33_3()PDF101 研究JS: app.launchURL()Acrobat JS 启动 URLAcrobat Reader
    test33_4.pdfcreate_malpdf33_4()PDF101 研究JS: app.media.getURLData()Acrobat JS 媒体获取Acrobat Reader
    test33_5.pdfcreate_malpdf33_5()PDF101 研究JS: SOAP.connect()Acrobat JS SOAP 连接Acrobat Reader
    test33_6.pdfcreate_malpdf33_6()PDF101 研究JS: SOAP.request()Acrobat JS SOAP 请求Acrobat Reader
    test33_7.pdfcreate_malpdf33_7()PDF101 研究JS: this.importDataObject()Acrobat JS 数据导入Acrobat Reader
    test33_8.pdfcreate_malpdf33_8()PDF101 研究JS: app.openDoc()Acrobat JS 打开文档Acrobat Reader
    test33_9.pdfcreate_malpdf33_9()PDF101 研究JS: fetch()Web API 回调(PDF.js/浏览器)Firefox/PDF.js
    test33_10.pdfcreate_malpdf33_10()PDF101 研究JS: XMLHttpRequestWeb API 回调(PDF.js/浏览器)Firefox/PDF.js
    test33_11.pdfcreate_malpdf33_11()PDF101 研究JS: new Image()Web API 图像回调(PDF.js/浏览器)Firefox/PDF.js
    test33_12.pdfcreate_malpdf33_12()PDF101 研究JS: WebSocketWeb API WebSocket 回调(PDF.js/浏览器)Firefox/PDF.js
    test33_13.pdfcreate_malpdf33_13()Adobe 0day 博客(2026 年 4 月)JS: RSS.addFeed()Acrobat JS RSS 订阅源回调Acrobat Reader
    test33_14.pdfcreate_malpdf33_14()Adobe 0day 博客(2026 年 4 月)JS: util.readFileIntoStream() + SOAP.request()本地文件读取 + 泄露链(try/catch 错误路径也会回调)Acrobat Reader
    test33_15.pdfcreate_malpdf33_15()Adobe 0day 博客(2026 年 4 月)表单字段分阶段 JS 加载器/Tx 小部件 /V 中的 Base64 载荷,通过 getField() + util.stringFromStream 解码Acrobat Reader
    test34_1.pdfcreate_malpdf34_1()PDF101 研究UNC: XObject 流带有 UNC 路径的图像 XObject通过页面渲染窃取 NTLM
    test34_2.pdfcreate_malpdf34_2()PDF101 研究UNC: GoToR带有 UNC FileSpec 的 /GoToR 动作通过远程 PDF 窃取 NTLM
    test34_3.pdfcreate_malpdf34_3()PDF101 研究UNC: 线程带有 UNC FileSpec 的 /Thread 动作通过线程引用窃取 NTLM
    test34_4.pdfcreate_malpdf34_4()PDF101 研究UNC: URI带有 UNC 路径的 /URI 动作通过 URI 动作窃取 NTLM
    test34_5.pdfcreate_malpdf34_5()PDF101 研究UNC: JS submitForm带有 UNC 路径的 this.submitForm()通过 JS 表单提交窃取 NTLM
    test34_6.pdfcreate_malpdf34_6()PDF101 研究UNC: JS getURL带有 UNC 路径的 this.getURL()通过 JS URL 获取窃取 NTLM
    test34_7.pdfcreate_malpdf34_7()PDF101 研究UNC: JS launchURL带有 UNC 路径的 app.launchURL()通过 JS 启动窃取 NTLM
    test34_8.pdfcreate_malpdf34_8()PDF101 研究UNC: JS SOAP带有 UNC 路径的 SOAP.connect()通过 JS SOAP 窃取 NTLM
    test34_9.pdfcreate_malpdf34_9()PDF101 研究UNC: JS openDoc带有 UNC 路径的 app.openDoc()通过 JS 打开文档窃取 NTLM
    test35.pdfcreate_malpdf35()PDF101 研究名称字典/Names /JavaScript 目录级别自动执行触发器替代 JS 执行触发器
    test36.pdfcreate_malpdf36()CVE-2016-2175 / CVE-2017-9096XMP 元数据中的 XXE/Metadata XMP 流中的 XXE <!ENTITY>服务器端回调(PDFBox, iText)
    test37.pdfcreate_malpdf37()CVE-2016-2175 / CVE-2017-9096XFA 表单数据中的 XXE/AcroForm /XFA 流中的 XXE <!ENTITY>服务器端回调(PDFBox, iText)
    test38.pdfcreate_malpdf38()CVE-2020-29075静默 DNS 追踪带有 /WC、/WS、/DS 触发器的目录 /AA无提示的 DNS 回调(Acrobat)
    test39.pdfcreate_malpdf39()CVE-2022-28244CSP 绕过带有嵌入 HTML/JS 的 RichMedia 注释跨域请求(Acrobat)
    test40.pdfcreate_malpdf40()CVE-2018-5158PostScript 计算器注入图像 XObject 中的 /FunctionType 4 JS 注入PDF.js worker 中的 JS 执行(Firefox)
    test41.pdfcreate_malpdf41()CVE-2018-20065无用户手势的 URI带有 /S /URI 自动导航的 /OpenAction静默导航(PDFium/Chrome)
    test42.pdfcreate_malpdf42()CVE-2025-66516XFA 中的 XXE OOB 参数实体/AcroForm /XFA 中的 %xxe; 参数实体强制 DTD 获取服务器端盲 XXE(Tika, Confluence, Jira)
    test43.pdfcreate_malpdf43()CVE-2025-70401注释 /T 字段 XSS文本注释 /T(作者)字段中的 `` 标签XSS 回调(Apryse WebViewer, web viewers)
    test44.pdfcreate_malpdf44()CVE-2024-12426LibreOffice URL 展开带有 vnd.sun.star.expand: 的 /URI 展开 ${HOME}环境变量泄露(LibreOffice < 24.8.4)
    test45.pdfcreate_malpdf45()CVE-2025-59803签名时的 OCG JS 触发/AA /WP+/DP 在签名工作流中通过 OCG 触发 JS签名过程中的回调(Foxit < 2025.2.1)
    test46.pdfcreate_malpdf46()CVE-2026-25755jsPDF 对象注入损坏的 JS 字符串 + 注入的 /AA /O 自动动作通过任何查看器的自动回调(jsPDF < 4.2.0)
    test47.pdfcreate_malpdf47()PDF 2.0 规范关联文件 HTML 嵌入通过目录 /AF + /EF EmbeddedFile 的 HTML通过嵌入 HTML 的回调(PDF 2.0 查看器)
    test48.pdfcreate_malpdf48()XFA 规范XFA SOAP 回调带有 initialize 事件的 <submit method="soap">SOAP HTTP 请求(Acrobat XFA 引擎)
    corkami PDF 技巧
  • 在 %%EOF 之后进行增量更新 — 通过增量更新在原始 %%EOF 标记之后追加新对象/动作。参考:PDF101 内容掩码,Didier Stevens
  • JS unescape() 编码 — 将 JS 载荷包裹在 eval(unescape("%61%6C%65%72%74...")) 中。参考:corkami PDF 技巧
  • 虚假文件头部 — 在 %PDF- 头部之前添加 JPEG/HTML/其他魔数(规范允许头部在前 1024 字节内)。混淆文件类型检测。参考:corkami,Decalage
  • 反仿真检测 — 在执行载荷之前,通过 event.target.zoomType == "FitPage" 或全局变量类型检查来检测真实的 Adobe Reader。参考:corkami PDF 技巧