乌云(WooYun.org)历史漏洞查询---http://wy.zone.ci/
乌云 Drops 文章在线浏览--------http://drop.zone.ci/
2015-08-26: 细节已通知厂商并且等待厂商处理中 2015-08-29: 厂商已经确认,细节仅向厂商公开 2015-09-01: 细节向第三方安全合作伙伴开放 2015-10-23: 细节向核心白帽子及相关领域专家公开 2015-11-02: 细节向普通白帽子公开 2015-11-12: 细节向实习白帽子公开 2015-11-27: 细节向公众公开
只想上个前台直接出数据。
看到/core/upload.class.php
function upfiles($data = array()){ global $mysql; $error = ""; $file = $data['file']; $dateFile = date("Y-m",time()); $this->setData($data); $newDir = ROOT_PATH.$this->file_dir; $count = $num = 0; $error_msg = array(); $err_var = array("-2"=>"文件不存在","-3"=>"图片类型不正确","-4"=>"不是图片类型","-5"=>"上传图片过大"); $_result = array(); foreach($_FILES[$file]['name'] as $i =>$value){ if ($value!=""){ $count ++; $this->img_type = strtolower(substr($_FILES[$file]['name'][$i],-3,3)); if ($_FILES[$file]['size'][$i]==0) $error = -2; if(!in_array($this->img_type,$this->file_type)) $error = -3; if(strpos($_FILES[$file]['type'][$i],'image')===false) $error = -4; if($_FILES[$file]['size'][$i] >$this->file_size*1024) $error = -5; if($_FILES[$file]['error'][$i] !=0 ) $error = -2; $this->_mkdirs($this->file_dir); $newFile = md5(time().rand(1,9)).$i.substr($_FILES[$file]['name'][$i],-4,4); $oldFile = $_FILES[$file]['name'][$i]; $allFile = $newDir.$newFile; if ($error<0){ $error_msg[] = $oldFile.$err_var[$error]; }else{ if(function_exists('move_uploaded_file')){ $result = move_uploaded_file($_FILES[$file]['tmp_name'][$i],$allFile); }else{ @copy($_FILES[$file]['tmp_name'][$i],$allFile); } $this->setSrcImg($allFile); $this->setCutimg(); $this->setDstImg($allFile); $this->_createMask(); $this->_output(); if($data['name'][$i]==""){ $_name = $oldFile; }else{ $_name = $data['name'][$i]; } $sql = "insert into `{users_upfiles}` set code='{$data['code']}',aid='{$data['aid']}',user_id='{$data['user_id']}',`name`='{$_name}',filesize='{$_FILES[$file]['size'][$i]}',filetype='{$this->img_type}',fileurl='".$this->file_dir.$newFile."',filename='".$newFile."',`addtime` = '".time()."', `updatetime` = '".time()."',`addip` = '".ip_address()."',`updateip` = '".ip_address()."'"; $mysql ->db_query($sql); $file_id = $mysql->db_insert_id(); $num++; } } } if ($num>0){ $sql = "select * from `{users_upfiles}` where code = '{$data['code']}' and aid = '{$data['aid']}' and if_cover = 1"; $result = $mysql->db_fetch_array($sql); if($result==false){ $sql = "update `{users_upfiles}` set if_cover=1 where id= {$file_id}"; $mysql->db_query($sql); } } $display = "有{$count}张相片上传,其中{$num}上传成功。".join(",",$error_msg); return $display; }
其中
name`='{$_name}'
是通过文件名获取的。由于是$_FILE变量获取,所以就可以无视单引号了(注:真的是这样么?测试下吧)。我们搜一下这个函数的调用
可以看到有近二十处调用,所以这些地方都存在注入。
http://demo1.wangdaixitong.com/?user&q=code/approve/realnamehttp://demo1.wangdaixitong.com/?user&q=code/approve/edu_statushttp://demo1.wangdaixitong.com/?user&q=code/attestations/onehttp://demo1.wangdaixitong.com/?user&q=code/attestations/more等等 差不多有上传的地方都有注入
我们随意拿一处测试
然后截包,对文件名加个单引号
报错了。构造一下出数据
转义一下
危害等级:低
漏洞Rank:1
确认时间:2015-08-29 09:07
谢谢
暂无