一 漏洞概述
1.1简介
DESTOON B2B网站管理系统是一套基于PHP+MySQL的开源B2B电子商务行业 门户网站解决方案,当前已发布会员、分站、
商城、供应、求购、行情、公司、展会、文章、 信息、品牉、团购、图库、专题、视频、下载、人才、知道等模型。
该软件被曝光出一个前台getshell导致任意代码执行的漏洞。
1.2影响版本
- Destoon 7.0 build0827及以前所有版本。
二 漏洞复现
2.1复现环境
- Linux Ubuntu 16.04
- Destoon 7.0 build0328
- Apache2.4
2.2环境搭建
网上下载源码本地搭建
Apache环境需要先将项目中的.htaccess文件移除,否则漏洞无法复现。
Nginx等环境可直接复现该漏洞。
2.3复现过程及结果

首先注册一个普通会员,在会员中心上传头像处上传两个文件。

上传两个文件的数据包可通过上面的代码构造。

上传的第一个文件为图片文件,文件后缀名改为php。

上传的第二个文件内容为php木马,文件后缀名改为 png。
上传成功之后文件保存在 file/temp目录下,命名格式为avatar+userid.php。由于还有其他检测,会将上传的文件重命名为xx.jpg,
所以此处需要条件竞争来获取webshell。

如果.htaccess文件的存在,访问file目录下的php文件会返回404页面。

但是.htaccess是apache的配置文件,经测试在nginx、iis等环境下丌会生效,file目录下的php文件可以正常执行。
三 影响范围
通过 ZoomEye 网络空间探测引擎进行探测,以下为网络空间中装有destoon的数量约为2020台,其中中国安装数量多,约有1321台。

四 修复建议
1.升级到Destoon 7.0 build092
2.源代码修改
通过对比Destoon 7.0 build0827和Destoon 7.0 build0921两个丌同版本,可看到官方对该漏洞的修补如下:

在moudle/member/avatar.inc.php处增加了对上传文件后缀名的检查,is_image函数内容如下:


在include/upload.class.php构造函数的循环中增加了一个break,只保存上传的第一个文件,同时对上传文件的后缀名进行二次检查。
3.技术业务咨询:
知道创宇技术业务咨询热线:400-060-9587(政府、国有企业)
028-68360638(互联网企业)
四 相关链接
参考链接:
https://www.destoon.com/download/
超级管理员知道创宇安全服务团队渗透工程师。