当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2014-067508

漏洞标题:FengCMS新版本重装

相关厂商:fengcms.com

漏洞作者: xlz0iza1

提交时间:2014-07-07 16:38

修复时间:2014-10-05 16:40

公开时间:2014-10-05 16:40

漏洞类型:设计错误/逻辑缺陷

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-07-07: 细节已通知厂商并且等待厂商处理中
2014-07-07: 厂商已经确认,细节仅向厂商公开
2014-07-10: 细节向第三方安全合作伙伴开放
2014-08-31: 细节向核心白帽子及相关领域专家公开
2014-09-10: 细节向普通白帽子公开
2014-09-20: 细节向实习白帽子公开
2014-10-05: 细节向公众公开

简要描述:

FengCms Beta 1.20
管理这样判断冒是那里不对啊。

详细说明:

用switch做判断,真的搞不懂程序猿是怎么想的啊,这里的step变量可以控制,导致重装程序。

switch($_GET['step']){
case '1': //安装许可协议
include ABS_PATH."/step/step1.php";
break;
case '2': //检查安装环境是否满足要求
$PHP_GD = '';
if(extension_loaded('gd')) {
if(function_exists('imagepng')) $PHP_GD .= 'png';
if(function_exists('imagejpeg')) $PHP_GD .= ' jpg';
if(function_exists('imagegif')) $PHP_GD .= ' gif';
}
$PHP_JSON = '0';
if(extension_loaded('json')) {
if(function_exists('json_decode') && function_exists('json_encode')) $PHP_JSON = '1';
}
//新加fsockopen 函数判断,此函数影响安装后会员注册及登录操作。
if(function_exists('fsockopen')) {
$PHP_FSOCKOPEN = '1';
}
$PHP_DNS = preg_match("/^[0-9.]{7,15}$/", @gethostbyname('www.baidu.cn')) ? 1 : 0;
//是否满足FengCms安装需求
$is_right = (phpversion() >= '5.2.0' && extension_loaded('mysql') && $PHP_JSON && $PHP_GD && $PHP_FSOCKOPEN) ? 1 : 0;
//配置文件是否存在和可写
$is_config = (is_readable($config_file) && is_writable($config_file)) ? 1 : 0;
//上传目录是否可写
$is_upload = (dir_writeable(ROOT_PATH."/upload")) ? 1 : 0;

//模块导出目录是否可写
$is_module = (dir_writeable(ROOT_PATH."https://wooyun-img.oss-cn-beijing.aliyuncs.com/upload/module")) ? 1 : 0;
//前台缓存目录是否可写
$is_cache = (dir_writeable(ROOT_PATH."/app/cache")) ? 1 : 0;
include ABS_PATH."/step/step2.php";
break;
case '3': //填写数据库信息
include ABS_PATH."/step/step3.php";
break;
case '4': //正在安装
$conn=@mysql_connect($_GET['host'],$_GET['user'],$_GET['password']);
if(!$conn){
echo '<script type="text/javascript">alert("链接主机失败,请检查主机地址、用户名和密码是否正确!");history.go(-1);</script>';
exit();
}elseif(intval(mysql_get_server_info($conn))<5){
echo '<script type="text/javascript">alert("您的MYSQL版本为'. mysql_get_server_info($conn).',版本太低,不能安装FengCms!");history.go(-1);</script>';
exit();
}else{
if(!mysql_select_db($_GET['dbname'],$conn)){ //如果数据库不存在,我们就进行创建。
if (!mysql_query("CREATE DATABASE ". $_GET['dbname'] ." default character set utf8;",$conn))
{

echo '<script type="text/javascript">alert("数据库不存在,创建不成功");history.go(-1);</script>';
}else{
if(!mysql_select_db($_GET['dbname'],$conn)){

echo '<script type="text/javascript">alert("链接数据库失败,请检查数据库是否正确!");history.go(-1);</script>';
}else{
include "data.php";
}
}
}else{
include "data.php";
}
}
break;
case '5': //安装完成
include ABS_PATH."/step/step5.php";
break;
case '6': //删除安装目录
if(rmdirs(ROOT_PATH.'/install') or rmdir(ROOT_PATH.'/install')){
echo '<script type="text/javascript">alert("删除成功!");close();</script>';
exit();
}else{
echo '<script type="text/javascript">alert("删除失败,请手工删除网站根目录下install目录!");close();</script>';
exit();
}
break;
}

漏洞证明:

http://test.com/FengCms%20Beta%201.20/install/index.php?host=localhost&user=root&password=****&dbname=fengcms&prefix=f_&url_type=1&step=4


QQ图片20140705123849.jpg


前提用户在没有删除/install的情况下面导致程序无限制任意安全。

修复方案:

修改判断语句~提醒用户删除可以改成强制。

版权声明:转载请注明来源 xlz0iza1@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:5

确认时间:2014-07-07 17:28

厂商回复:

站长应该在安装完之后,删除install这个文件夹。这样,我们做个处理,让他不可以无限安装吧。

最新状态:

暂无


漏洞评价:

评论

  1. 2014-07-08 12:37 | FengCMS(乌云厂商)

    FengCms安全测试站地址:http://guf521656.h163.92hezu.org/ 有效期2014-7-8至2014-7-15 欢迎各位安全界的朋友帮我们寻找安全漏洞!作为一个小小的创业团队,对各位朋友对FengCms的关注表示衷心的感谢!

  2. 2014-07-10 16:22 | FengCMS(乌云厂商)

    非常感谢各位白帽子的辛勤工作!FengCms安全测试站地址:http://guf521656.h163.92hezu.org/ 已经升级到最新版本 有效期2014-7-8至2014-7-15 欢迎各位安全界的朋友帮我们寻找安全漏洞!作为一个小小的创业团队,对各位朋友对FengCms的关注表示衷心的感谢!