finecms V5 会员头像任意文件上传漏洞 附修复代码
前台会员头像上传任意文件,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
仅仅是需要记住当前用户的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
finecms V5 会员头像任意文件上传漏洞 附修复代码相关推荐
- php.ini 米拓_MetInfo(米拓) v5.1.3任意文件上传漏洞分析附利用EXP | CN-SEC 中文网
摘要 MetInfo 23号发布了新版本5.1.5,修补了本文提到的漏洞,当然严格来说应该是任意变量覆盖漏洞-. ps:欢迎各种形式转载,首发t00ls.net MetInfo 23号发布了新版本5. ...
- 畅捷通T+ v17任意文件上传漏洞复现
1.前言 8月29晚上就开始收到通知,让我们来排查一下是否有使用畅捷通的系统,说是疑似0day导致很多用户被植入勒索病毒,一时间风头十足.第二天很多平台都更新的防护策略,本次漏洞是任意文件上传漏洞,如 ...
- 【代码审计】CLTPHP_v5.5.3 前台任意文件上传漏洞分析
0x00 环境准备 CLTPHP官网:http://www.cltphp.com 网站源码版本:CLTPHP内容管理系统5.5.3版本 程序源码下载:https://gitee.com/chich ...
- php上传漏洞绕过gd库,jQuery File Upload任意文件上传漏洞
事件背景 jQuery是一个快速.简洁的JavaScript框架,是继Prototype之后又一个JavaScript代码库(或JavaScript框架).jQuery File Upload一个jQ ...
- 某office前台任意文件上传漏洞分析
X微e-office的那个前台任意文件上传漏洞已经被爆出一段时间了,相关的漏洞利用脚本甚至是漏洞批量利用脚本 也有很多.在这里根据系统代码结合POC来分析一下这个漏洞点. 定位漏洞点 [私信回复&qu ...
- 任意文件上传mysql_BigDump 跨站脚本、SQL注入、任意文件上传漏洞
发布日期:2012-11-28 更新日期:2012-12-04 受影响系统: ozerov BigDump 0.29b 描述: ------------------------------------ ...
- vc++ 6.0 创建程序快捷方式的一个例子源码_漏洞复现:phpcms v9.6.0任意文件上传漏洞(CVE201814399)...
文章说明 漏洞复现是为了学习漏洞利用所写,漏洞都是互联网上以流传已久的各种漏洞的利用及原理,用来增强自己见识,培养自己动手能力,有兴趣的朋友可自行搭建环境练习.源码下载连接在文章最后. 漏洞说明 PH ...
- 织梦guestbook.php漏洞,DEDE:织梦漏洞修复(含任意文件上传漏洞与注入漏洞)
这几天阿里频繁提醒网站有漏洞,搞得我不胜其烦,好吧,我修复还不行吗?搜索之后整理如下,仅供参考(5.7以上版本适用): 任意文件上传漏洞修复 一./include/dialog/select_soft ...
- 详细分析 Sonlogger 任意文件上传漏洞 (CVE-2021-27964)
聚焦源代码安全,网罗国内外最新资讯! 概述 Sonlogger 是土耳其SFC 公司 开发的一款应用软件,兼容土耳其<第5651号法>,是一款基于 Web 的 SonicWall 防火墙 ...
- FireEye 红队失窃工具大揭秘之:分析复现 Zoho 任意文件上传漏洞(CVE-2020-8394)
聚焦源代码安全,网罗国内外最新资讯! 前言 最近,全球领先的网络安全公司 FireEye 疑遭某 APT 组织的攻击,其大量政府客户信息遭越权访问,且红队工具被盗.虽然目前尚不清楚这些红队工具将被如 ...
最新文章
- 重要的是改变命运,而非升职加薪
- php+原生代码+赋值,js重新赋值原生的方法
- JavaScript之array
- RESTFfu l规范 以及理解
- 实现微信文章页面 http://mp.weixin.qq.com/s?__biz=MjM5MDI3OTAwMg==amp;mid=200337417amp;idx=1amp;sn=5959ed1...
- composer全局 linux_Linux下全局安装composer方法
- samba (centos6.5)服务
- linux还原系统_Linux Kernel 5.5 最终删除 SYSCTL 系统调用
- java 基本语法 二_java基础语法2
- 有序表归并算法(数据结构学习笔记)
- BTA12A-ASEMI的IGBT管BTA12A
- bzoj2827: 千山鸟飞绝 平衡树 替罪羊树 蜜汁标记
- 移动硬盘提示格式化解决办法,未正确删除导致不能读取文件提示格式化解决方案
- ActiveSync 与 Pocket PC 2003 仿真器 建立同步
- 中国传统的节日(端午节)
- 纯CSS实现对话气泡(MD.5)
- 视频监控远程传输方案
- 凡事预则立不预则废---20180112
- 3.4.8nbsp;拉里·佩奇和谢尔盖·布林
- android 电池电量广播,Android查看电池电量的方法(基于BroadcastReceiver)