欢迎光临
我们一直在努力

FineCMS SYS_KEY未初始化导致任意文件写入

起初我以为这个sys_key是随机生成的.然后我本地和vps上发现都是一样的.最后去看了下源码发现没有生成这个值的地方.最后的最后看了开源的地址http://git.oschina.net/dayrui/finecms/blob/master/v5/config/system.php

发现是固定值 24b16fede9a67c9251d3e7c7161c83ac

文件:finecms/dayrui/controllers/Api.php


    /**      * 自定义数据调用(新版本)      */     public function data2() {          $data = array();          // 安全码认证         $auth = $this->input->get('auth', true);         if ($auth != md5(SYS_KEY)) {             // 授权认证码不正确             $data = array('msg' => '授权认证码不正确', 'code' => 0);         } else {             // 解析数据             $cache = '';             $param = $this->input->get('param');             if (isset($param['cache']) && $param['cache']) {                 $cache = md5(dr_array2string($param));                 $data = $this->get_cache_data($cache);             }             if (!$data) {                  if ($param == 'login') {                     // 登录认证                     $code = $this->member_model->login(                         $this->input->get('username'),                         $this->input->get('password'),                         0, 1);                     if (is_array($code)) {                         $data = array(                             'msg' => 'ok',                             'code' => 1,                             'return' => $this->member_model->get_member($code['uid'])                         );                     } elseif ($code == -1) {                         $data = array('msg' => fc_lang('会员不存在'), 'code' => 0);                     } elseif ($code == -2) {                         $data = array('msg' => fc_lang('密码不正确'), 'code' => 0);                     } elseif ($code == -3) {                         $data = array('msg' => fc_lang('Ucenter注册失败'), 'code' => 0);                     } elseif ($code == -4) {                         $data = array('msg' => fc_lang('Ucenter:会员名称不合法'), 'code' => 0);                     }                 } elseif ($param == 'update_avatar') {                     // 更新头像                     $uid = (int)$_REQUEST['uid'];                     $file = $_REQUEST['file'];                     //                     // 创建图片存储文件夹                     $dir = SYS_UPLOAD_PATH.'/member/'.$uid.'/';                     @dr_dir_delete($dir);                     if (!is_dir($dir)) {                         dr_mkdirs($dir);                     }                     $file = str_replace(' ', '+', $file);                     if (preg_match('/^(data:/s*image//(/w+);base64,)/', $file, $result)){                         $new_file = $dir.'0x0.'.$result[2];                         if (!@file_put_contents($new_file, base64_decode(str_replace($result[1], '', $file)))) {                             $data = array(                                 'msg' => '目录权限不足或磁盘已满',                                 'code' => 0                             );                         }

之前的一样.正则获取的地方有问题.image后面的值为任意值.导致悲剧的发生
778933998 FineCMS SYS_KEY未初始化导致任意文件写入

778933998 FineCMS SYS_KEY未初始化导致任意文件写入

未经允许不得转载:杂术馆 » FineCMS SYS_KEY未初始化导致任意文件写入
分享到: 更多 (0)