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


Jul 17 2017

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

首页 » 漏洞收集 » FineCMS SYS_KEY未初始化导致任意文件写入   

起初我以为这个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后面的值为任意值.导致悲剧的发生


778933998.png


3251241459.png

如果您喜欢本博客,欢迎点击图片定订阅到邮箱填写您的邮件地址,订阅我们的精彩内容:

正文部分到此结束

文章标签:这篇文章木有标签

版权声明:若无特殊注明,本文皆为( mOon )原创,转载请保留文章出处。

也许喜欢: «Xshell后门事件中用到的DNS Tunneling技术分析 | OrientDB <=2.22 代码执行»

你肿么看?

你还可以输入 250/250 个字

 微笑 大笑 拽 大哭 亲亲 流汗 喷血 奸笑 囧 不爽 晕 示爱 害羞 吃惊 惊叹 爱你 吓死了 呵呵

评论信息框

已有1条评论

匿名

2017-08-18 16:12 沙发
更详细:https://www.seebug.org/vuldb/ssvid-93209