*WBCE CMS任意文件上传漏洞(CVE-2022-25099)*
*一、漏洞概述 **
*1.1 漏洞简介*
·漏洞名称:WBCE CMS任意文件上传漏洞
·漏洞编号:CVE-2022-25099
·漏洞类型:文件上传漏洞
·漏洞威胁等级:高危
·影响范围:WBCE CMS v1.5.2
·利用条件:PHP 7.4.14 - PHP 8.2.x | CMS v1.5.2
*1.2 组件描述*
WBCE CMS是一个通用的、用户友好的内容管理系统。它附带了一些用于简单文本页、新闻、联系人表单的模块,并包括有用的管理工具。WBCE插件库中提供了各种各样的库、交互和结构化内容等模块,并且可以轻松安装。
*1.3 漏洞描述*
WBCE CMS 存在安全漏洞,该漏洞源于 /languages/index.php 中的漏洞允许攻击者通过精心设计的 PHP 文件执行任意代码。
*二、漏洞复现*
*2.1 应用协议*
http
*2.2 环境搭建*
1.按照源码下载:https://github.com/WBCE/WBCE_CMS
2.安装地址为xxx/wbce/install,提前搭建数据库,按照提示安装即可
*2.3 漏洞复现 **
1.访问存在漏洞uri:wbce/admin/languages/index.php
2.选择文件
3.上传恶意php文件,此时发现他在前端发生解析,已回馈到前端页面,即可以上传木马,getshell
4.但由于前端解析,尝试使用系统命令进行RCE(ipconfig)
*三、漏洞分析*
*3.1 技术背景*
\
*3.2 代码分析*
从校验文件是否存在,到将文件放到指定目录下未对该文件进行任何的条件过滤和判断,从而可以任意上传恶意文件
// Move uploaded file into WBCE /temp folder
if (!move_uploaded_file($_FILES['userfile']['tmp_name'], $temp_file)) {
if (file_exists($temp_file)) {
unlink($temp_file);
}
$admin->print_error($MESSAGE['GENERIC_CANNOT_UPLOAD']);
}
// Check if uploaded file is a valid language file (no binary file etc.)
$content = file_get_contents($temp_file);
if (strpos($content, '<?php') === false) {
$admin->print_error($MESSAGE['GENERIC_INVALID_LANGUAGE_FILE']);
}
// Remove any vars with name "language_code"
unset($language_code);
// Read the temp file and look for a language code
require($temp_file);
$new_language_version = $language_version;
// Check if the file is valid
if (!isset($language_code)) {
if (file_exists($temp_file)) {
unlink($temp_file);
} // Remove temp file
// Restore to correct language
require(WB_PATH . '/languages/' . LANGUAGE . '.php');
$admin->print_error($MESSAGE['GENERIC_INVALID_LANGUAGE_FILE']);
}
// Set destination for language file
$language_file = WB_PATH . '/languages/' . $language_code . '.php';
$action = "install";
*3.3 流量分析 **
上传路径为 /admin/languages/install.php,在post body部分可以看到明显的恶意payload
*3.4 绕过方式*
\
*四、漏洞检测*
*4.1 组件版本自检*
以下版本受该漏洞影响:cms = v1.5.2
目前最高版本:V1.6.1
*4.2 漏洞触发前提自检*
*4.3 漏洞检测规则、插件编写思路*
以下为该漏洞请求包特征
1.“wbce/admin/languages/install.php”;
2.“Sec-Fetch-Dest”
3."name=“userfile”
4.存在php文件头标识“<?php”
*4.4 研判建议 **
此功能点为上传一个language的解析包,在响应体中观察body部分,看是否出现php恶意代码
也可以将攻击者的请求包在本地复现,看页面是否解析恶意内容
*五、防范建议*
*5.1 官方修复建议*
\
*5.2 临时修复建议*
写入上传过滤规则,黑名单等
将前端解析功能关闭
六、*参考链接*
源码下载url:https://github.com/WBCE/WBCE_CMS/archive/refs/tags/1.5.2.zip