jonaslejon/malicious-pdf

GitHub: jonaslejon/malicious-pdf

一个用于生成多种恶意 PDF 测试文件的 Python 工具,覆盖多类注入与数据外泄场景。

Stars: 3661 | Forks: 459

![malicious-pdf.png](https://triop.se/wp-content/uploads/2021/08/malicious-pdf-e1629197726260.png) [![made-with-python](https://img.shields.io/badge/Made%20with-Python-1f425f.svg)](https://www.python.org/) [![OpenSSF Best Practices](https://www.bestpractices.dev/projects/9599/badge)](https://www.bestpractices.dev/projects/9599) # 恶意 PDF 生成器 ☠️ 生成 67 个恶意 PDF 测试文件,用于在 PDF 查看器、转换器及 Web 应用程序中测试电话回拨、SSRF、XSS、XXE、NTLM 凭证窃取和数据外泄。可与 [Burp Collaborator](https://portswigger.net/burp/documentation/collaborator) 或 [Interact.sh](https://github.com/projectdiscovery/interactsh) 配合使用。 适用于渗透测试、漏洞赏金狩猎和/或红队行动等。我创建此工具是因为需要一个能够生成包含各种链接的 PDF 文件的工具。仅限教育和职业用途。 ## 用法 ``` pip install -r requirements.txt python3 malicious-pdf.py burp-collaborator-url ``` 输出将写入 `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 ``` 最大混淆(Level 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 转图像转换器及文档处理流水线中查找 SSRF、XXE、盲回拨和 NTLM 泄露(适用于接受 PDF 输入的程序) ## 致谢 - [PDF 中的不安全特性](https://web-in-security.blogspot.com/2021/01/insecure-features-in-pdfs.html) - [Burp Suite UploadScanner](https://github.com/modzero/mod0BurpUploadScanner/) - [Bad-Pdf](https://github.com/deepzec/Bad-Pdf) - [PDF 文档的恶意探索](https://www.scitepress.org/Papers/2020/89923/89923.pdf) - ["Portable Document Flaws 101" Black Hat USA 2020 演讲](https://github.com/RUB-NDS/PDF101) - [Adobe Reader — 通过 XFA 样式表的 PDF 回调](https://insert-script.blogspot.com/2019/01/adobe-reader-pdf-callback-via-xslt.html) - [Foxit PDF 阅读器 PoC,DoHyun Lee](https://twitter.com/l33d0hyun/status/1448342241647366152) - [Eicar 测试文件,Stas Yakobov](https://github.com/fire1ce/eicar-standard-antivirus-test-files) - [多种 PDF 漏洞 — FormCalc 与 XXE](https://insert-script.blogspot.com/2014/12/multiple-pdf-vulnerabilites-text-and.html) - [PDF — 玩弄 Web:FormCalc 头部注入](https://insert-script.blogspot.com/2015/05/pdf-mess-with-web.html) - [Adobe Reader PDF — 客户端请求注入](https://insert-script.blogspot.com/2018/05/adobe-reader-pdf-client-side-request.html) - [ImageMagick — 通过 PDF 密码的 Shell 注入](https://insert-script.blogspot.com/2020/11/imagemagick-shell-injection-via-pdf.html) - [便携式数据外泄 — PortSwigger Research](https://portswigger.net/research/portable-data-exfiltration) - [CVE-2024-4367 — PDF.js 中的任意 JS 执行](https://codeanlabs.com/2024/05/cve-2024-4367-arbitrary-js-execution-in-pdf-js/) - [PDF 文件格式安全 — Philippe Lagadec](https://www.decalage.info/hugo/file_formats_security/pdf/) - [CVE-2016-2175 — Apache PDFBox XXE](https://nvd.nist.gov/vuln/detail/CVE-2016-2175) - [CVE-2017-9096 — iText XXE](https://nvd.nist.gov/vuln/detail/CVE-2017-9096) - [CVE-2020-29075 — Acrobat Reader 静默 DNS 追踪](https://nvd.nist.gov/vuln/detail/CVE-2020-29075) - [CVE-2022-28244 — Acrobat Reader CSP 绕过](https://nvd.nist.gov/vuln/detail/CVE-2022-28244) - [CVE-2018-5158 — Firefox PDF.js PostScript 计算器注入](https://nvd.nist.gov/vuln/detail/CVE-2018-5158) - [CVE-2018-20065 — PDFium 在无用户手势下的 URI 动作](https://nvd.nist.gov/vuln/detail/CVE-2018-20065) - [ExpMon — Sophisticated Adobe Reader 0-day 分析(2026 年 4 月)](https://justhaifei1.blogspot.com/2026/04/expmon-detected-sophisticated-zero-day-adobe-reader.html) — 启发自 test33_13/14/15 与 Level 4 混淆 ## 媒体报道 - [Brisk Infosec](https://www.briskinfosec.com/tooloftheday/toolofthedaydetail/Malicious-PDF) - [Daily REDTeam](https://www.linkedin.com/posts/daily-red-team_github-jonaslejonmalicious-pdf-generate-activity-7096476604016582656-d9xM/) - [恶意 PDF 文件 | 红队 | 渗透测试](https://www.youtube.com/watch?v=hf3p_t8CPWs) - [John Hammond — PDF 文件能成为恶意软件吗?](https://www.youtube.com/watch?v=TP4n8fBl6DA) - [Black Hat 伦理黑客](https://www.blackhatethicalhacking.com/tools/malicious-pdf/) - [0x1 渗透测试合集](https://0x1.gitlab.io/pentesting/malicious-pdf/) - [Security Toolkit / WADComs](https://securitytoolkit.github.io/wadcoms/malicious-pdf/) - [unsafe.sh](https://unsafe.sh/go-111577.html) - [Cristi Zot 在 LinkedIn](https://www.linkedin.com/posts/cristivlad_github-jonaslejonmalicious-pdf-generate-activity-7026575045871239169-RKFK) - [Siva R. 在 LinkedIn](https://al.linkedin.com/posts/siva-rajendran_github-jonaslejonmalicious-pdf-generate-activity-7026634093891059712-PDcl) ## 完整测试矩阵
点击展开全部 70 个测试用例 | 测试文件 | 功能 | CVE/参考 | 攻击向量 | 方法 | 影响 | |----------|------|----------|----------|------|------| | test1.pdf | `create_malpdf()` | CVE-2018-4993 | 外部文件访问 | `/GoToE` 动作配合 UNC 路径 | 通过文件系统实现网络回拨 | | test1_1.pdf | `create_malpdf()` | CVE-2018-4993 | 外部文件访问 | `/GoToE` 动作配合 HTTPS URL | 通过 HTTPS 实现网络回拨 | | test2.pdf | `create_malpdf2()` | XFA 表单提交 | 表单数据外泄 | 带有提交事件的 XDP 表单 | 自动表单提交 | | test3.pdf | `create_malpdf3()` | JavaScript 注入 | 代码执行 | `/OpenAction` 配合 `app.openDoc()` | 外部文档加载 | | test4.pdf | `create_malpdf4()` | CVE-2019-7089 | XSLT 注入 | 带有外部 XSLT 样式表的 XFA | UNC 路径回拨 | | test5.pdf | `create_malpdf5()` | PDF101 研究 | URI 动作 | `/URI` 动作类型 | DNS 预取/HTTP 请求 | | test6.pdf | `create_malpdf6()` | PDF101 研究 | 启动动作 | `/Launch` 配合外部 URL | 外部资源执行 | | test7.pdf | `create_malpdf7()` | PDF101 研究 | 远程 PDF | `/GoToR` 动作 | 远程 PDF 加载 | | test8.pdf | `create_malpdf8()` | PDF101 研究 | 表单提交 | `/SubmitForm` 配合 HTML 标志 | 表单数据提交 | | test9.pdf | `create_malpdf9()` | PDF101 研究 | 数据导入 | `/ImportData` 动作 | 外部数据导入 | | test10.pdf | `create_malpdf10()` | CVE-2017-10951 | JavaScript 执行 | Foxit 的 `this.getURL()` 回拨 | 通过 Foxit Reader 的网络回拨 | | test11.pdf | `create_malpdf11()` | EICAR 测试 | AV 检测 | 嵌入的 EICAR 字符串 | 防病毒测试 | | test12.pdf | `create_malpdf12()` | CVE-2014-8453 | FormCalc 数据外泄 | XFA FormCalc 的 `Post()` 函数 | 同源数据外泄(携带 Cookie) | | test13.pdf | `create_malpdf13()` | 请求注入 | CRLF 头部注入 | XFA 提交的 `textEncoding` CRLF | HTTP 头部操控 | | test14.svg | `create_malpdf1()` | ImageMagick Shell 注入 | 通过 SVG/MSL 的 Shell 注入 | SVG-MSL 伪装 `authenticate` 属性 | 通过 ImageMagick 的远程代码执行 | | test15.pdf | `create_malpdf15()` | PDF 规范 | FormCalc 头部注入 | XFA FormCalc 的 `Post()` 配合自定义头部 | 任意 HTTP 头部注入 | | test16.pdf | `create_malpdf16()` | PDF 规范 | 通过 GoToE 的 JavaScript | `/GoToE` 配合 `javascript:` URI | 通过 ``/`` 嵌入时的浏览器 XSS | | test17.pdf | `create_malpdf17()` | CVE-2014-8452 | XXE 注入 | `XMLData.parse()` 外部实体 | XML 外部实体解析 | | test18.pdf | `create_malpdf18()` | PortSwigger 研究 | 注解 URI 注入 | 重复 `/A` 键注入未转义的括号 | 通过 PDF-Lib/jsPDF 输出的 XSS | | test19.pdf | `create_malpdf19()` | PortSwigger 研究 | PV 自动执行 | `/AA /PV` 屏幕注解在页面可见时触发 JS | 自动代码执行(Acrobat) | | test20.pdf | `create_malpdf20()` | PortSwigger 研究 | PC 关闭触发 | `/AA /PC` 注解在页面关闭时触发 JS | 关闭时代码执行(Acrobat) | | test21.pdf | `create_malpdf21()` | PortSwigger 研究 | SubmitForm 提交 PDF | `/SubmitForm` 标志 256 发送整个 PDF | 完整 PDF 内容外泄 | | test22.pdf | `create_malpdf22()` | PortSwigger 研究 | JS submitForm() | `this.submitForm()` 配合 `cSubmitAs: "PDF"` | Acrobat 中的 PDF 内容提交 | | test23.pdf | `create_malpdf23()` | PortSwigger 研究 | 小部件按钮注入 | 覆盖页面的隐形 `/Btn` 小部件,点击时触发 JS | 代码执行(Chrome/PDFium) | | test24.pdf | `create_malpdf24()` | PortSwigger 研究 | 文本字段 SSRF | 带 `submitForm()` POST 的 `/Tx` 字段 | 通过表单数据的盲 SSRF | | test25.pdf | `create_malpdf25()` | PortSwigger 研究 | 内容提取 | `getPageNthWord()` 读取所有文本并外泄 | 渲染文本外泄 | | test26.pdf | `create_malpdf26()` | PortSwigger 研究 | 鼠标悬停触发 | `/AA /E` 注解在鼠标进入时触发 JS | 鼠标悬停时代码执行(PDFium) | | ~~test27~~ | — | — | 已移除 | test3(Acrobat OpenAction JS)与 test23(Chrome 小部件按钮)的重复 | — | | test28.pdf | `create_malpdf28()` | PortSwigger 研究 | URL 劫持 | 注入未转义的括号以创建新的 `/URI` 动作 | 通过 PDF-Lib/jsPDF 的点击重定向 | | test29.pdf | `create_malpdf29()` | CVE-2024-4367 | FontMatrix 注入 | Type1 字体 `FontMatrix` 字符串突破 `c.transform()` | PDF.js(Firefox < 126)中的任意 JS 执行 | | test30.pdf | `create_malpdf30()` | PDF101 研究 | 外部 XObject 流 | 图像 XObject 通过 `/FS /URL` 从远程 URL 获取数据 | 页面渲染时的静默回拨(无动作/JS) | | test31.pdf | `create_malpdf31()` | PDF101 研究 | 线程动作 | `/S /Thread` 配合远程 FileSpec | 通过线程引用的网络回拨 | | test32.pdf | `create_malpdf32()` | PDF101 研究 | 打印触发启动 | `/Launch` 配合 `/Win << /O /print >>` 强制远程获取 | 通过打印操作的网络回拨 | | test33_1.pdf | `create_malpdf33_1()` | PDF101 研究 | JS: `this.submitForm()` | Acrobat JS 表单提交回拨 | Acrobat Reader | | test33_2.pdf | `create_malpdf33_2()` | PDF101 研究 | JS: `this.getURL()` | Acrobat JS URL 获取 | Acrobat Reader | | test33_3.pdf | `create_malpdf33_3()` | PDF101 研究 | JS: `app.launchURL()` | Acrobat JS 启动 URL | Acrobat Reader | | test33_4.pdf | `create_malpdf33_4()` | PDF101 研究 | JS: `app.media.getURLData()` | Acrobat JS 媒体获取 | Acrobat Reader | | test33_5.pdf | `create_malpdf33_5()` | PDF101 研究 | JS: `SOAP.connect()` | Acrobat JS SOAP 连接 | Acrobat Reader | | test33_6.pdf | `create_malpdf33_6()` | PDF101 研究 | JS: `SOAP.request()` | Acrobat JS SOAP 请求 | Acrobat Reader | | test33_7.pdf | `create_malpdf33_7()` | PDF101 研究 | JS: `this.importDataObject()` | Acrobat JS 数据导入 | Acrobat Reader | | test33_8.pdf | `create_malpdf33_8()` | PDF101 研究 | JS: `app.openDoc()` | Acrobat JS 打开文档 | Acrobat Reader | | test33_9.pdf | `create_malpdf33_9()` | PDF101 研究 | JS: `fetch()` | Web API 回拨(PDF.js/浏览器) | Firefox/PDF.js | | test33_10.pdf | `create_malpdf33_10()` | PDF101 研究 | JS: `XMLHttpRequest` | Web API 回拨(PDF.js/浏览器) | Firefox/PDF.js | | test33_11.pdf | `create_malpdf33_11()` | PDF101 研究 | JS: `new Image()` | Web API 图像回拨(PDF.js/浏览器) | Firefox/PDF.js | | test33_12.pdf | `create_malpdf33_12()` | PDF101 研究 | JS: `WebSocket` | Web API WebSocket 回拨(PDF.js/浏览器) | Firefox/PDF.js | | test33_13.pdf | `create_malpdf33_13()` | Adobe 0-day 博客(2026 年 4 月) | JS: `RSS.addFeed()` | Acrobat JS RSS 订阅回拨 | Acrobat Reader | | test33_14.pdf | `create_malpdf33_14()` | Adobe 0-day 博客(2026 年 4 月) | JS: `util.readFileIntoStream()` + `SOAP.request()` | 本地文件读取 + 外泄链(try/catch 错误路径也会回拨) | Acrobat Reader | | test33_15.pdf | `create_malpdf33_15()` | Adobe 0-day 博客(2026 年 4 月) | 表单字段阶段 JS 加载器 | `/Tx` 小部件 `/V` 中的 Base64 载荷,通过 `getField()` + `util.stringFromStream` 解码 | Acrobat Reader | | test34_1.pdf | `create_malpdf34_1()` | PDF101 研究 | UNC: XObject 流 | 带有 UNC 路径的图像 XObject | 通过页面渲染的 NTLM 窃取 | | test34_2.pdf | `create_malpdf34_2()` | PDF101 研究 | UNC: GoToR | `/GoToR` 动作配合 UNC FileSpec | 通过远程 PDF 的 NTLM 窃取 | | test34_3.pdf | `create_malpdf34_3()` | PDF101 研究 | UNC: 线程 | `/Thread` 动作配合 UNC FileSpec | 通过线程引用的 NTLM 窃取 | | test34_4.pdf | `create_malpdf34_4()` | PDF101 研究 | UNC: URI | `/URI` 动作配合 UNC 路径 | 通过 URI 动作的 NTLM 窃取 | | test345.pdf | `create_malpdf34_5()` | PDF101 研究 | UNC: JS submitForm | `this.submitForm()` 配合 UNC 路径 | 通过 JS 表单提交的 NTLM 窃取 | | test34_6.pdf | `create_malpdf34_6()` | PDF101 研究 | UNC: JS getURL | `this.getURL()` 配合 UNC 路径 | 通过 JS URL 抓取的 NTLM 窃取 | | test34_7.pdf | `create_malpdf34_7()` | PDF101 研究 | UNC: JS launchURL | `app.launchURL()` 配合 UNC 路径 | 通过 JS 启动的 NTLM 窃取 | | test34_8.pdf | `create_malpdf34_8()` | PDF101 研究 | UNC: JS SOAP | `SOAP.connect()` 配合 UNC 路径 | 通过 JS SOAP 的 NTLM 窃取 | | test34_9.pdf | `create_malpdf34_9()` | PDF101 研究 | UNC: JS openDoc | `app.openDoc()` 配合 UNC 路径 | 通过 JS 打开文档的 NTLM 窃取 | | test35.pdf | `create_malpdf35()` | PDF101 研究 | 名称字典 | `/Names /JavaScript` 目录级自动执行触发器 | 替代 JS 执行触发器 | | test36.pdf | `create_malpdf36()` | CVE-2016-2175 / CVE-2017-9096 | XMP 元数据中的 XXE | `/Metadata` XMP 流中的 XXE `` | 服务器端回拨(PDFBox、iText) | | test37.pdf | `create_malpdf37()` | CVE-2016-2175 / CVE-2017-9096 | XFA 表单数据中的 XXE | `/AcroForm /XFA` 流中的 XXE `` | 服务器端回拨(PDFBox、iText) | | test38.pdf | `create_malpdf38()` | CVE-2020-29075 | 静默 DNS 追踪 | 目录 `/AA` 配合 `/WC`、`/WS`、`/DS` 触发器 | Acrobat 中无提示的 DNS 回拨 | | test39.pdf | `create_malpdf39()` | CVE-2022-28244 | CSP 绕过 | 带有嵌入式 HTML/JS 的 RichMedia 注解 | 跨域请求(Acrobat) | | test40.pdf | `create_malpdf40()` | CVE-2018-5158 | PostScript 计算器注入 | 图像 XObject 中的 `/FunctionType 4` JS 注入 | PDF.js Worker(Firefox)中的 JS 执行 | | test41.pdf | `create_malpdf41()` | CVE-2018-20065 | 无用户手势的 URI | `/OpenAction` 配合 `/S /URI` 自动导航 | 静默导航(PDFium/Chrome) | | test42.pdf | `create_malpdf42()` | CVE-2025-66516 | XFA OOB 参数实体注入 | `/AcroForm /XFA` 中的 `%xxe;` 参数实体强制 DTD 获取 | 服务器端盲 XXE(Tika、Confluence、Jira) | | test43.pdf | `create_malpdf43()` | CVE-2025-70401 | 注解 /T 字段 XSS | 文本注解 `/T`(作者)字段中的 `` 标签 | 回拨(Apryse WebViewer、Web 查看器) | | test44.pdf | `create_malpdf44()` | CVE-2024-12426 | LibreOffice URL 扩展 | `/URI` 配合 `vnd.sun.star.expand:` 展开 `${HOME}` | 环境变量外泄(LibreOffice < 24.8.4) | | test45.pdf | `create_malpdf45()` | CVE-2025-59803 | 签名时的 OCG JS 触发 | `/AA /WP` + `/DP` 在签名工作流中通过 OCG 触发 JS | 签名期间的回拨(Foxit < 2025.2.1) | | test46.pdf | `create_malpdf46()` | CVE-2026-25755 | jsPDF 对象注入 | 损坏的 JS 字符串 + 注入的 `/AA /O` 自动动作 | 任何查看器中的自动回拨(jsPDF < 4.2.0) | | test47.pdf | `create_malpdf47()` | PDF 2.0 规范 | 关联文件 HTML 嵌入 | 目录 `/AF` + `/EF` 嵌入式文件 | 通过嵌入式 HTML 的回拨(PDF 2.0 查看器) | | test48.pdf | `create_malpdf48()` | XFA 规范 | XFA SOAP 回拨 | `` 配合 `initialize` 事件 | SOAP HTTP 请求(Acrobat XFA 引擎) | ## 待办事项:新测试用例 - **Acrobat JS 指纹识别 API** — 添加用于侦察/指纹识别 API 的测试用例,这些 API 在 2026 年 4 月 Adobe 0-day 漏洞利用链中被使用([ref](https://x.com/Gi7w0rm/status/2042370775546482815)):`Collab.isDocReadOnly`(文件系统探测)、`app.plugIns`(枚举已安装插件)、`app.viewerVersion`(版本指纹识别) ## 待办事项:尚未实现的混淆方法 - **空密码 PDF 加密** — 使用空用户密码加密所有字符串/流。文档可无提示打开,但静态分析工具无法读取内容。这是当前混淆中最大的缺口。参考:[Didier Stevens](https://blog.didierstevens.com/category/pdf/)、[PDF 加密有多安全?](https://www.decalage.info/hugo/file_formats_security/pdf/) - **对象流(ObjStm)** — 将 PDF 对象隐藏在压缩流容器中。简单解析器(包括未带 `-O` 标志的 PDFiD)会完全遗漏这些对象。参考:[PDF 规范 ISO 32000 §7.5.7](https://www.iso.org/standard/63534.html) - **getAnnots() 代码存储** — 将 JavaScript 载荷拆分到注解元数据字段(主题、作者)中,在运行时通过 `app.doc.getAnnots()[n].subject` 和 `eval` 检索。参考:[Julia Wolf - PDF Obfuscation using getAnnots()](https://blog.didierstevens.com/2010/01/14/) - **信息字典数据提取** — 将编码载荷存储在 `/Info` 预告字段(`/Title`、`/Author`)中,在运行时通过 `info.Title` 在 JS 中检索。参考:[corkami PDF 技巧](https://github.com/corkami/docs/blob/master/PDF/PDF.md) - **AcroForm 字段值提取** — 将载荷片段存储在表单字段 `/V` 的值中,通过 JS 的 `getField("name").value` 检索。参考:[corkami PDF 技巧](https://github.com/corkami/docs/blob/master/PDF/PDF.md) - **名称树分步执行** — 将 JavaScript 拆分到多个 `/Names` 条目中按顺序执行。参考:[corkami PDF 技巧](https://github.com/corkami/docs/blob/master/PDF/PDF.md) - **增量更新(%%EOF 之后)** — 通过增量更新在原始 `%%EOF` 标记后追加新对象/动作。参考:[PDF101 内容掩码](https://github.com/RUB-NDS/PDF101)、[Didier Stevens](https://blog.didierstevens.com/2010/05/18/more-malformed-pdfs/) - **JS `unescape()` 编码** — 将 JS 载荷包裹在 `eval(unescape("%61%6C%65%72%74..."))` 中。参考:[corkami PDF 技巧](https://github.com/corkami/docs/blob/master/PDF/PDF.md) - **伪造文件头** — 在 `%PDF-` 标头前添加 JPEG/HTML/其他魔数(规范允许标头位于前 1024 字节内)。混淆文件类型检测。参考:[corkami](https://github.com/corkami/docs/blob/master/PDF/PDF.md)、[Decalage](https://www.decalage.info/hugo/file_formats_security/pdf/) - **反模拟检测** — 通过 `event.target.zoomType == "FitPage"` 或全局变量类型检查,在执行载荷前检测真实的 Adobe Reader。参考:[corkami PDF 技巧https://github.com/corkami/docs/blob/master/PDF/PDF.md) ## 不会实现的功能 - ~~CVE-2023-26369 — Adobe Acrobat TTF 字体堆溢出写操作~~ — 需要二进制利用(堆喷洒、ROP 链、Shellcode)。无公开 PoC,无法生成简单的回拨载荷。 - ~~CVE-2021-28550 — Adobe Acrobat 使用后释放~~ — 需要二进制利用链 + 沙箱逃逸(CVE-2021-31199/31201)。无公开 PoC,无法生成简单的回拨载荷。 ## 星标历史 [![Star History Chart](https://api.star-history.com/svg?repos=jonaslejon/malicious-pdf&type=Date)](https://www.star-history.com/#jonaslejon/malicious-pdf&Date)
标签:Bug赏金, Burp Collaborator, Interact.sh, NTLM凭证窃取, PDF注入, PDF漏洞, PDF生成器, PDF转换器, Python, SEO, SSRF, Web应用程序, XSS, XXE, 安全测试, 开源安全工具, 恶意PDF, 攻击性安全, 数据展示, 无后门, 测试文件, 漏洞情报, 电话回家回调, 红队, 逆向工具, 逆向工程平台