契约锁电子签章系统 pdfverifier 远程代码执行漏洞分析(补丁包逆向分析)
字数 1552 2025-09-01 11:26:11

契约锁电子签章系统 pdfverifier 远程代码执行漏洞分析

一、漏洞概述

契约锁电子签章系统存在一个高危远程代码执行漏洞,该漏洞源于系统在处理OFD文件上传时的路径穿越问题,允许攻击者在服务器上执行任意代码。该漏洞影响广泛版本的契约锁系统,已于2025年7月通过安全补丁修复。

二、受影响版本

  • 4.3.8 <= 契约锁 <= 5.x.x && 补丁版本 < 2.1.8
  • 4.0.x <= 契约锁 <= 4.3.7 && 补丁版本 < 1.3.8

三、漏洞原理深度分析

3.1 漏洞路径

通过逆向分析补丁包,确认漏洞涉及的关键路径为:

  • /pdfverifier
  • /api/pdfverifier

3.2 漏洞触发机制

该漏洞是一个上传OFD文件后解压过程中的路径穿越任意文件上传漏洞:

  1. 攻击者构造含有目录穿越符(如../)的OFD压缩包
  2. 系统使用ZipFile解压读取所有ZipEntry
  3. 解压过程中系统未正确校验路径,导致文件被解压到穿越符指定的目录
  4. 通过文件覆盖或上传恶意脚本实现任意代码执行

3.3 补丁分析

补丁修复逻辑位于com.qiyuesuo.security.patch.filter.wrapper.PdfverifierPreventWrapper类中,主要修复点:

  1. 文件上传过滤

    • 重写getParts()方法处理上传文件
    • 提取filename并判断后缀是否为PDF
    • 对于非PDF文件或敏感URL,进一步检查路径穿越
  2. 路径穿越检测

    • 实现hasPathTraversal(byte[])方法
    • 将上传文件保存为临时OFD压缩包
    • 解压并检查每个条目:
      • 是否包含路径穿越符(../)
      • 是否以敏感后缀结尾(.sh, .jar, .bat, .py等)
    • 发现异常则丢弃文件
  3. MIME处理

    • 添加MimeDelegate类解码MIME格式文件名
    • 防止攻击者通过编码文件名绕过过滤

3.4 关键安全配置

从解密的security.rsc文件中获取的关键安全参数:

  • 路径穿越符:../
  • 敏感文件后缀:.sh, .jar, .bat, .py

四、环境识别

可通过以下方式识别契约锁系统:

Hunter语法

web.body="qyswebapp"

Fofa语法

app="契约锁-电子签署平台"

五、漏洞复现步骤

  1. 构造恶意OFD文件

    # 示例构造脚本
    import zipfile
    
    zf = zipfile.ZipFile("malicious.ofd", mode="w")
    zf.writestr("../../test.txt", "test content")
    zf.close()
    
  2. 发送恶意请求

    POST /pdfverifier HTTP/1.1
    Host: target.com
    Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryxxxx
    
    ------WebKitFormBoundaryxxxx
    Content-Disposition: form-data; name="file"; filename="malicious.ofd"
    Content-Type: application/ofd
    
    [OFD文件二进制内容]
    ------WebKitFormBoundaryxxxx--
    
  3. 验证利用结果

    • 检查test.txt是否被写入预期目录
    • 确认文件内容是否正确

六、漏洞利用进阶

成功利用此漏洞后,攻击者可实现:

  1. 前端篡改

    • 覆盖前端文件修改系统界面
    • 植入恶意JavaScript代码
  2. 持久化后门

    • 写入/etc/cron.d目录创建定时任务
    • 植入Webshell实现持续访问
  3. 横向移动

    • 读取系统配置文件获取数据库凭证
    • 利用系统权限访问内网其他资源

七、修复建议

  1. 官方补丁

    • 立即升级至安全版本:
      • 4.x系列升级至1.3.8或更高
      • 5.x系列升级至2.1.8或更高
    • 补丁下载地址:https://www.qiyuesuo.com/more/security/servicepack
  2. 临时缓解措施

    • 禁用/pdfverifier/api/pdfverifier接口
    • 配置WAF规则拦截可疑OFD文件上传
    • 限制服务器文件系统关键目录的写入权限
  3. 长期防护建议

    • 实施文件上传白名单机制
    • 对压缩文件内容进行严格校验
    • 定期进行安全审计和渗透测试

八、技术总结

该漏洞危害性高,利用门槛相对较低,攻击者可通过构造特殊OFD文件实现服务器完全控制。漏洞根源在于文件解压过程中的路径校验不严,结合契约锁系统的高权限特性,使得漏洞影响更为严重。建议所有用户立即采取修复措施,避免遭受攻击。

契约锁电子签章系统 pdfverifier 远程代码执行漏洞分析 一、漏洞概述 契约锁电子签章系统存在一个高危远程代码执行漏洞,该漏洞源于系统在处理OFD文件上传时的路径穿越问题,允许攻击者在服务器上执行任意代码。该漏洞影响广泛版本的契约锁系统,已于2025年7月通过安全补丁修复。 二、受影响版本 4.3.8 <= 契约锁 <= 5.x.x && 补丁版本 < 2.1.8 4.0.x <= 契约锁 <= 4.3.7 && 补丁版本 < 1.3.8 三、漏洞原理深度分析 3.1 漏洞路径 通过逆向分析补丁包,确认漏洞涉及的关键路径为: /pdfverifier /api/pdfverifier 3.2 漏洞触发机制 该漏洞是一个上传OFD文件后解压过程中的路径穿越任意文件上传漏洞: 攻击者构造含有目录穿越符(如 ../ )的OFD压缩包 系统使用 ZipFile 解压读取所有 ZipEntry 解压过程中系统未正确校验路径,导致文件被解压到穿越符指定的目录 通过文件覆盖或上传恶意脚本实现任意代码执行 3.3 补丁分析 补丁修复逻辑位于 com.qiyuesuo.security.patch.filter.wrapper.PdfverifierPreventWrapper 类中,主要修复点: 文件上传过滤 : 重写 getParts() 方法处理上传文件 提取 filename 并判断后缀是否为PDF 对于非PDF文件或敏感URL,进一步检查路径穿越 路径穿越检测 : 实现 hasPathTraversal(byte[]) 方法 将上传文件保存为临时OFD压缩包 解压并检查每个条目: 是否包含路径穿越符( ../ ) 是否以敏感后缀结尾( .sh , .jar , .bat , .py 等) 发现异常则丢弃文件 MIME处理 : 添加 MimeDelegate 类解码MIME格式文件名 防止攻击者通过编码文件名绕过过滤 3.4 关键安全配置 从解密的 security.rsc 文件中获取的关键安全参数: 路径穿越符: ../ 敏感文件后缀: .sh , .jar , .bat , .py 等 四、环境识别 可通过以下方式识别契约锁系统: Hunter语法 : Fofa语法 : 五、漏洞复现步骤 构造恶意OFD文件 : 发送恶意请求 : 验证利用结果 : 检查 test.txt 是否被写入预期目录 确认文件内容是否正确 六、漏洞利用进阶 成功利用此漏洞后,攻击者可实现: 前端篡改 : 覆盖前端文件修改系统界面 植入恶意JavaScript代码 持久化后门 : 写入 /etc/cron.d 目录创建定时任务 植入Webshell实现持续访问 横向移动 : 读取系统配置文件获取数据库凭证 利用系统权限访问内网其他资源 七、修复建议 官方补丁 : 立即升级至安全版本: 4.x系列升级至1.3.8或更高 5.x系列升级至2.1.8或更高 补丁下载地址:https://www.qiyuesuo.com/more/security/servicepack 临时缓解措施 : 禁用 /pdfverifier 和 /api/pdfverifier 接口 配置WAF规则拦截可疑OFD文件上传 限制服务器文件系统关键目录的写入权限 长期防护建议 : 实施文件上传白名单机制 对压缩文件内容进行严格校验 定期进行安全审计和渗透测试 八、技术总结 该漏洞危害性高,利用门槛相对较低,攻击者可通过构造特殊OFD文件实现服务器完全控制。漏洞根源在于文件解压过程中的路径校验不严,结合契约锁系统的高权限特性,使得漏洞影响更为严重。建议所有用户立即采取修复措施,避免遭受攻击。