文章总结: CVE-2025-68428披露jsPDFNode版因loadFile、addImage等方法未校验路径参数,允许../遍历,致攻击者把/etc/passwd等文件内容嵌入PDF,原理是path.resolve直接解析恶意序列后交由readFileSync读取;官方已下架问题版本,企业应升级依赖并禁止用户控制文件路径。 综合评分: 78 文章分类: 漏洞分析,WEB安全,安全工具,漏洞POC
jsPDF 本地文件包含/目录遍历 (CVE-2025-68428)
原创
棉花糖糖糖
棉花糖fans
2026年1月7日 16:19 四川
前言
CVE-2025-68428,jsPDF项目的目录穿越导致本地文件包含,文中poc仅供合法测试,用于企业自查,切勿用于非法测试,未授权测试造成后果由使用者承担,与本公众号无关。
漏洞概述
此漏洞源于 jsPDF (Node.js 构建版) 的部分方法(loadFile, addImage, html, addFont)未对用户传入的文件路径进行严格的过滤与校验。远程攻击者可构造包含路径遍历序列(如 ../)的恶意请求,绕过预期的资源目录限制,读取服务器上的敏感文件(如配置文件、密钥等),并将文件内容嵌入到生成的 PDF 文档中。
漏洞原理
官方好像下架了其他漏洞版本,我只在github找到jsPDF 3.0.4版本,基于这个版本做的分析。
在dist/jspdf.node.js文件的第 15903行有一个暴露给用户的jsPDFAPI.loadFile:
实际执行函数为nodeReadFile,就在下面一点位置就找到了,函数是这样的:
function nodeReadFile(url, sync, callback) {
sync = sync === false ? false : true;
var result = undefined;
var fs = require("fs");
var path = require("path");
url = path.resolve(url);
if (sync) {
try {
result = fs.readFileSync(url, { encoding: "latin1" });
} catch (e) {
return undefined;
}
} else {
fs.readFile(url, { encoding: "latin1" }, function(err, data) {
if (!callback) {
return;
}
if (err) {
callback(undefined);
}
callback(data);
});
}
return result;
}
})(jsPDF.API);
问题出在这个函数传参url值并没有做安全校验,但用了path.resolve做路径处理,当用户传入类似../../../etc/passwd的恶意值时,它会主动解析../这样的序列,向上遍历文件夹,然后生成绝对路径并赋值给后面的url参数,最终传递给readFileSync直接读取了文件,造成漏洞。
官方github中给了一个本地验证的poc
import { jsPDF } from "./dist/jspdf.node.js";
const doc = new jsPDF();
doc.addImage("./secret.txt", "JPEG", 0, 0, 10, 10);
doc.save("test.pdf"); // the generated PDF will contain the "secret.txt" fileimport osos.system('ls')
鉴于jsPDF貌似不会单独出现,一般是作为别的产品的引用功能,所以我做了一个仿真的环境,利用有漏洞的功能加载pdf文件模版,用户前端传参读取产品目录下的模版文件,恶意传参读取文件获取flag。
环境已在无境中上架:vip.bdziyi.com/ulab,无境,英文名Unbounded Lab,是专为网络安全学习者打造的综合性实战平台,提供真实企业级漏洞环境,让您在安全的环境中提升实战技能,核心特色:独立隔离环境,每位用户都拥有完全独立的靶场环境,即使是庞大的内网靶场,环境之间也是零干扰,确保您的学习过程不受任何影响。
广告时间:
棉花糖会员站介绍(25年11月15日版本) 新增在线独立环境内网靶场
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:棉花糖fans 棉花糖糖糖《jsPDF 本地文件包含/目录遍历 (CVE-2025-68428)》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论