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

暗月博客 2019年11月21日22:45:46评论418 views字数 2466阅读8分13秒阅读模式
摘要

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

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

发现是固定值 24b16fede9a67c9251d3e7c7161c83ac

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

/**
 * 自定义数据调用(新版本)
 */
publicfunctiondata2() {
 
    $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后面的值为任意值.导致悲剧的发生

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

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

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
暗月博客
  • 本文由 发表于 2019年11月21日22:45:46
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   FineCMS SYS_KEY未初始化导致任意文件写入http://cn-sec.com/archives/73937.html

发表评论

匿名网友 填写信息