WBCE CMS任意文件上传漏洞(CVE-2022-25099)

*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,提前搭建数据库,按照提示安装即可

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FeKIzj2k-1689907534929)(image-20230710142409369.png)]

*2.3 漏洞复现 **

1.访问存在漏洞uri:wbce/admin/languages/index.php

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QNAIHGDv-1689907534930)(image-20230710142452726.png)]

2.选择文件[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S7sLyjcU-1689907534931)(image-20230710142543973.png)]

3.上传恶意php文件,此时发现他在前端发生解析,已回馈到前端页面,即可以上传木马,getshell

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tlrhbKGq-1689907534931)(image-20230710142729575.png)]

4.但由于前端解析,尝试使用系统命令进行RCE(ipconfig)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vNiYjL5Z-1689907534931)(image-20230710142832899.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CklYILSm-1689907534932)(image-20230710142820415.png)]

*三、漏洞分析*

*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[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ry0D1zsU-1689907534932)(image-20230711091443905.png)]

*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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tkite

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值