jsPDF本地文件包含/目录遍历

admin 2026-01-09 03:09:57 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: CVE-2025-68428漏洞涉及jsPDFNode.js构建版的目录穿越与本地文件包含。因核心函数未对路径进行安全校验,直接解析传入参数,攻击者可利用../序列读取服务器敏感文件。建议企业自查并升级版本,严格限制或过滤文件路径参数以防止信息泄露。 综合评分: 86 文章分类: 漏洞分析,代码审计,漏洞预警,WEB安全,漏洞POC


cover_image

jsPDF 本地文件包含/目录遍历

HZ安全实验室

2026年1月8日 11:14 吉林

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

声明

CVE-2025-68428 漏洞涉及 jsPDF(Node.js 构建版)的目录穿越与本地文件包含问题。本文所提供的 POC 仅用于企业合法自查与安全评估,严禁用于未授权的测试行为。任何未经授权利用该漏洞进行的测试操作,所造成的一切后果均由使用者自行承担,本公众号不承担任何责任。

介绍

该漏洞存在于 jsPDF 的 Node.js 构建版本中,其 loadFileaddImagehtmladdFont 等核心方法未对用户传入的文件路径实施严格的过滤与合法性校验。远程攻击者可通过构造包含路径遍历序列(如 ../)的恶意请求,突破程序预期的资源访问目录限制,非法读取服务器上的敏感文件(如配置文件、密钥文件、系统核心文件等),并将读取到的文件内容嵌入至生成的 PDF 文档中,从而窃取敏感信息。

漏洞成因

在 jsPDF 源码的 dist/jspdf.node.js 文件第 15903 行,暴露了供用户调用的 jsPDFAPI.loadFile 接口,该接口最终调用 nodeReadFile 函数完成文件读取操作。nodeReadFile 函数的核心代码如下:

plaintext

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(url) 对路径进行解析处理,未对路径中包含的 ../ 等目录遍历序列做任何过滤、白名单校验或路径范围限制。当攻击者传入 ../../../etc/passwd 这类恶意路径时,path.resolve 会主动解析遍历序列,生成服务器上敏感文件的绝对路径,并将该路径直接传递给 fs.readFileSync/fs.readFile 执行文件读取操作,最终导致服务器本地文件被非法读取,形成目录穿越与文件包含漏洞。

对应功能点

image-20260108110907049

poc如下

image-20260108110706825

image-20260108110819790


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:HZ安全实验室 《jsPDF 本地文件包含/目录遍历》

评论:0   参与:  0