finecms前台任意文件上传

  • A+
所属分类:漏洞时代
摘要

前台头像上传的地方任意文件上传接收txt的参数.然后匹配了正则.最后取出内容和文件后缀部分。再直接存盘.文件名都是统一的0x0

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

    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 ([email protected]_put_contents($new_file, base64_decode(str_replace($result[1], '', $file)))) {                     exit(dr_json(0, '目录权限不足或磁盘已满'));

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

finecms前台任意文件上传
仅仅是需要记住当前用户的id就可以搞定了

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

修复方案:

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

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: