博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
finecms V5 会员头像任意文件上传漏洞 附修复代码
阅读量:7118 次
发布时间:2019-06-28

本文共 3327 字,大约阅读时间需要 11 分钟。

前台会员头像上传任意文件,finecms v5.2及之后的版本已修复此漏洞,大家可以对比一下代码确认

涉及文件:/finecms/dayrui/controllers/member/Account.php

public function upload() {

// 创建图片存储文件夹$dir = SYS_UPLOAD_PATH.'/member/'.$this->uid.'/';@dr_dir_delete($dir);!is_dir($dir) && dr_mkdirs($dir);if ($_POST['tx']) {    $file = str_replace(' ', '+', $_POST['tx']);    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)))) {            exit(dr_json(0, '目录权限不足或磁盘已满'));

接收txt的参数.然后匹配了正则.最后取出内容和文件后缀部分。再直接存盘.文件名都是统一的0x0

finecms V5 会员头像任意文件上传漏洞 附修复代码

仅仅是需要记住当前用户的id就可以搞定了

网络修复方案:

if (preg_match('/^(data:\s*image\/(png|jpg|jpeg);base64,)/', $file, $result)){

官方修复方案:升级到最新版,或手动替换代码

public function upload() {

// 创建图片存储文件夹    $dir = dr_upload_temp_path().'member/'.$this->uid.'/';    @dr_dir_delete($dir);    !is_dir($dir) && dr_mkdirs($dir);    if ($_POST['tx']) {        $file = str_replace(' ', '+', $_POST['tx']);        if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $file, $result)){            $new_file = $dir.'0x0.'.$result[2];            if (!in_array(strtolower($result[2]), array('jpg', 'jpeg', 'png', 'gif'))) {                exit(dr_json(0, '目录权限不足'));            }            if (!@file_put_contents($new_file, base64_decode(str_replace($result[1], '', $file)))) {                exit(dr_json(0, '目录权限不足'));            } else {                list($width, $height, $type, $attr) = getimagesize($new_file);                if (!$type) {                    @unlink($new_file);                    exit(function_exists('iconv') ? iconv('UTF-8', 'GBK', '图片字符串不规范') : 'error3');                }                $this->load->library('image_lib');                $config['create_thumb'] = TRUE;                $config['thumb_marker'] = '';                $config['maintain_ratio'] = FALSE;                $config['source_image'] = $new_file;                foreach (array(30, 45, 90, 180) as $a) {                    $config['width'] = $config['height'] = $a;                    $config['new_image'] = $dir.$a.'x'.$a.'.'.$result[2];                    $this->image_lib->initialize($config);                    if (!$this->image_lib->resize()) {                        exit(dr_json(0, '上传错误:'.$this->image_lib->display_errors()));                        break;                    }                }                // ok                $my = SYS_UPLOAD_PATH.'/member/'.$this->uid.'/';                @dr_dir_delete($my);                !is_dir($my) && dr_mkdirs($my);                $c = 0;                if ($fp = @opendir($dir)) {                    while (FALSE !== ($file = readdir($fp))) {                        $ext = substr(strrchr($file, '.'), 1);                        if (in_array(strtolower($ext), array('jpg', 'jpeg', 'png', 'gif'))) {                            if (copy($dir.$file, $my.$file)) {                                $c++;                            }                        }                    }                    closedir($fp);                }                if (!$c) {                    exit(dr_json(0,  fc_lang('未找到目录中的图片')));                }            }        } else {            exit(dr_json(0, '图片字符串不规范'));        }    } else {        exit(dr_json(0, '图片不存在'));    }

转载于:https://blog.51cto.com/13785115/2128603

你可能感兴趣的文章
【沫沫金】安卓手机版 - 日期控件
查看>>
在Linux使用exec执行命令时报的哪些错
查看>>
Waud.js – 使用HTML5降级处理的Web音频库
查看>>
WIN10 64位 JDK的安装
查看>>
CentOS 6.2目录服务之LDAP(一)
查看>>
使用高速通道加速iOS版本审核
查看>>
比较好玩的动态添加网页元素
查看>>
可替代的C语言开发环境
查看>>
Word 2003中打开最近操作过的文档的两种推荐的方法
查看>>
一条长为L的绳子,一面靠墙,另外三边组成矩形,问此矩形最大面积能是多少?...
查看>>
保持Service不被Kill掉的方法--双Service守护 && Android实现双进程守护 2
查看>>
从源码分析常见的基于Array的数据结构动态扩容机制
查看>>
重新认识javascript的settimeout和异步
查看>>
【组合数学+动态规划】在如下8*6的矩阵中,请计算从A移动到B一共有____种走法。要求每次只能向上或向右移动一格,并且不能经过P。...
查看>>
前几天入手一大菠萝,写个初始化教程
查看>>
CSS布局 ——从display,position, float属性谈起
查看>>
SoapUI Pro Project Solution Collection-DataSource(jdbc,excel)
查看>>
全国主要城市不同日照标准的间距系数
查看>>
python网络爬虫(一):网络爬虫科普与URL含义
查看>>
UVA 11732 - strcmp() Anyone?(Trie)
查看>>