契约锁电子签章系统 pdfverifier rce 前台漏洞分析(从源码分析)
字数 1344 2025-09-01 11:26:03

契约锁电子签章系统PDFVerifier前台RCE漏洞分析报告

1. 漏洞概述

本报告详细分析契约锁电子签章系统中PDFVerifier组件存在的一个前台远程代码执行(RCE)漏洞。该漏洞源于系统在处理OFD文件时,未对ZIP压缩包中的文件路径进行严格校验,导致攻击者可通过构造恶意ZIP文件实现目录穿越,进而实现任意文件写入。

2. 环境搭建

2.1 系统组成

  • 系统包含三个Web服务:
    • 管理员界面:http://127.0.0.1:9181
    • 普通用户界面:http://127.0.0.1:9180(漏洞所在)

2.2 启动方式

  • Linux环境:执行sh脚本启动
  • Windows环境:执行bat脚本启动
  • 重要:启动后终端界面不能关闭

2.3 注意事项

  • 系统启动涉及证书签名验证,需根据代码调试绕过
  • 应用默认以普通用户权限运行,C盘可能无写入权限

3. 漏洞复现

3.1 攻击流程

  1. 构造包含目录穿越路径的恶意ZIP文件
  2. 通过普通用户界面(9180端口)上传该文件
  3. 系统解压时执行目录穿越,实现任意文件写入

3.2 实际操作步骤

  1. 使用工具(如YAKIT)上传恶意ZIP文件
  2. 观察目标目录是否出现穿越写入的文件
  3. 若失败,检查权限问题(普通用户权限限制)

3.3 利用限制

  • Windows系统下利用难度较大
  • 实际利用效果取决于系统权限和配置
  • 常见利用方式:热加载攻击

4. 漏洞分析

4.1 入口点定位

  • 漏洞对应JAR包中的Pdfverifier组件
  • 通过分析PrivappConfigurer类确定未授权访问路径

4.2 关键代码流程

  1. 路由定位:/verify接口
  2. 文件处理流程:
    • 判断文件类型(PDF/OFD)
    • PDF文件若加密则拒绝处理
    • 根据类型调用相应签名验证处理器
    • 提取Document ID
    • 返回验证结果

4.3 OFD文件处理漏洞点

  1. 进入isOfd方法判断
  2. 调用FileZip类的decompre方法解压
  3. 漏洞关键点:
    • 解析ZIP文件时未校验路径
    • 直接读取字节写入指定文件
    • 无任何目录穿越防护措施

5. 漏洞修复分析

5.1 官方补丁

  • 补丁地址:https://www.qiyuesuo.com/more/security/servicepack
  • 关键修复类:PdfverifierPreventWrapper
  • 修复内容:增加了对文件名的目录穿越检测

5.2 安全配置解密

  1. 安全配置存储在security.rsc加密文件中

  2. 解密流程:

    • 从JAR包内读取资源文件
    • 逐行解析"key:value"格式数据
    • 使用RSA私钥解密key和value
    • 存入全局SECURITY_SRC_MAP映射
  3. 解密关键代码:

    decryptByDefaultPrivateKey(String cipherText) {
        // 使用硬编码私钥解密
        String privateKey = "xxx"; // 实际密钥已省略
        // 解密逻辑...
    }
    

5.3 编写解密脚本

可基于提供的解密方法和密钥编写解密脚本,获取明文配置。

6. 安全建议

  1. 及时更新到最新补丁版本
  2. 对文件上传实施严格路径校验
  3. 避免使用硬编码加密密钥
  4. 最小权限原则运行服务
  5. 加强输入验证和输出编码

7. 总结

该漏洞利用契约锁电子签章系统在处理OFD文件时的目录穿越缺陷,通过构造恶意ZIP文件实现任意文件写入。漏洞位于前台且无需认证,危害性较高。开发人员应重视文件处理过程中的路径校验,避免类似安全问题。

契约锁电子签章系统PDFVerifier前台RCE漏洞分析报告 1. 漏洞概述 本报告详细分析契约锁电子签章系统中PDFVerifier组件存在的一个前台远程代码执行(RCE)漏洞。该漏洞源于系统在处理OFD文件时,未对ZIP压缩包中的文件路径进行严格校验,导致攻击者可通过构造恶意ZIP文件实现目录穿越,进而实现任意文件写入。 2. 环境搭建 2.1 系统组成 系统包含三个Web服务: 管理员界面: http://127.0.0.1:9181 普通用户界面: http://127.0.0.1:9180 (漏洞所在) 2.2 启动方式 Linux环境:执行 sh 脚本启动 Windows环境:执行 bat 脚本启动 重要 :启动后终端界面不能关闭 2.3 注意事项 系统启动涉及证书签名验证,需根据代码调试绕过 应用默认以普通用户权限运行,C盘可能无写入权限 3. 漏洞复现 3.1 攻击流程 构造包含目录穿越路径的恶意ZIP文件 通过普通用户界面(9180端口)上传该文件 系统解压时执行目录穿越,实现任意文件写入 3.2 实际操作步骤 使用工具(如YAKIT)上传恶意ZIP文件 观察目标目录是否出现穿越写入的文件 若失败,检查权限问题(普通用户权限限制) 3.3 利用限制 Windows系统下利用难度较大 实际利用效果取决于系统权限和配置 常见利用方式:热加载攻击 4. 漏洞分析 4.1 入口点定位 漏洞对应JAR包中的 Pdfverifier 组件 通过分析 PrivappConfigurer 类确定未授权访问路径 4.2 关键代码流程 路由定位: /verify 接口 文件处理流程: 判断文件类型(PDF/OFD) PDF文件若加密则拒绝处理 根据类型调用相应签名验证处理器 提取Document ID 返回验证结果 4.3 OFD文件处理漏洞点 进入 isOfd 方法判断 调用 FileZip 类的 decompre 方法解压 漏洞关键点: 解析ZIP文件时未校验路径 直接读取字节写入指定文件 无任何目录穿越防护措施 5. 漏洞修复分析 5.1 官方补丁 补丁地址:https://www.qiyuesuo.com/more/security/servicepack 关键修复类: PdfverifierPreventWrapper 修复内容:增加了对文件名的目录穿越检测 5.2 安全配置解密 安全配置存储在 security.rsc 加密文件中 解密流程: 从JAR包内读取资源文件 逐行解析"key:value"格式数据 使用RSA私钥解密key和value 存入全局 SECURITY_SRC_MAP 映射 解密关键代码: 5.3 编写解密脚本 可基于提供的解密方法和密钥编写解密脚本,获取明文配置。 6. 安全建议 及时更新到最新补丁版本 对文件上传实施严格路径校验 避免使用硬编码加密密钥 最小权限原则运行服务 加强输入验证和输出编码 7. 总结 该漏洞利用契约锁电子签章系统在处理OFD文件时的目录穿越缺陷,通过构造恶意ZIP文件实现任意文件写入。漏洞位于前台且无需认证,危害性较高。开发人员应重视文件处理过程中的路径校验,避免类似安全问题。