jsPDF本地文件包含/目录遍历(CVE-2025-68428)

admin 2026-01-08 01:58:20 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: CVE-2025-68428披露jsPDFNode版因loadFile、addImage等方法未校验路径参数,允许../遍历,致攻击者把/etc/passwd等文件内容嵌入PDF,原理是path.resolve直接解析恶意序列后交由readFileSync读取;官方已下架问题版本,企业应升级依赖并禁止用户控制文件路径。 综合评分: 78 文章分类: 漏洞分析,WEB安全,安全工具,漏洞POC


cover_image

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)》

评论:0   参与:  0