finecms 5.0.8低版本前台任意文件上传-

来源:互联网 发布:刚开始学编程 编辑:程序博客网 时间:2024/06/05 00:18

前台头像上传的地方任意文件上传

publicfunction 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


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

webshell http://xxx.com//uploadfile/member/uid/0x0.php

修复方案:

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

本地实验:

上传一个->图片木马->抓包->然后将图片后缀改为php->上传->访问 http://xxx.com//uploadfile/member/uid/0x0.php->菜刀链接->结束


原创粉丝点击