契约锁电子签章系统 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 攻击流程
- 构造包含目录穿越路径的恶意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映射
-
解密关键代码:
decryptByDefaultPrivateKey(String cipherText) { // 使用硬编码私钥解密 String privateKey = "xxx"; // 实际密钥已省略 // 解密逻辑... }
5.3 编写解密脚本
可基于提供的解密方法和密钥编写解密脚本,获取明文配置。
6. 安全建议
- 及时更新到最新补丁版本
- 对文件上传实施严格路径校验
- 避免使用硬编码加密密钥
- 最小权限原则运行服务
- 加强输入验证和输出编码
7. 总结
该漏洞利用契约锁电子签章系统在处理OFD文件时的目录穿越缺陷,通过构造恶意ZIP文件实现任意文件写入。漏洞位于前台且无需认证,危害性较高。开发人员应重视文件处理过程中的路径校验,避免类似安全问题。