欢迎光临
我们一直在努力

OpenSNS任意文件删除+IIS6.0(getshell)

漏洞文件:/Application/Weibo/Controller/IndexController.class.php
public function uploadMyExp(){           $flag=1;         $uid=is_login();         $mycollection='mycollection';           $config = array(             'maxSize' => 5*1024*1024,             'rootPath' => './Uploads/',             'savePath' => 'Expression/'.$mycollection.'/',             'saveName' => '',             'exts' => array('jpg', 'gif','png','jpeg'),             'autoSub' => true,             'subName' => '',             'replace' => true,         );         if($_FILES['file']['size']<5*1024||$_FILES['file']['size']> 5*1024*1024){             echo json_encode('-3');             $flag=0;         }         $upload = new pload($config); // êμày?ˉé?′?àà         $info = $upload->upload($_FILES);         if (!$info) { // é?′?′í?óìáê?′í?óD??¢             echo json_encode('-1');             $flag=0;         }

获取当前登录的uid,然后获取上传的FILES进入upload
white OpenSNS任意文件删除+IIS6.0(getshell)
正常的一个流程
white OpenSNS任意文件删除+IIS6.0(getshell)
这里有一个check检测,跟进
white OpenSNS任意文件删除+IIS6.0(getshell)
对后缀进行了检测.所以我们得必须满足后面.jpg这个条件
white OpenSNS任意文件删除+IIS6.0(getshell)
文件名的控制
white OpenSNS任意文件删除+IIS6.0(getshell)
当saveName为空时则true并截取我们上传的文件名
white OpenSNS任意文件删除+IIS6.0(getshell)
最后则是检测后缀还有MIME类型,true则进入uplandfie.复现
white OpenSNS任意文件删除+IIS6.0(getshell)
为了方便我var_dump了出来
white OpenSNS任意文件删除+IIS6.0(getshell)
成功上传
任意文件删除:

$name=I('post.name','','op_t');         $allname=substr($name,strrpos($name,'/')+1,strlen($name)-strrpos($name,'/')-1);        // $iname=substr($allname,0,strrpos($allname,'.'));         $rp= $this-> ROOT_PATH = str_replace('/Application/Weibo/Controller/IndexController.class.php', '', str_replace('/', '/', __FILE__));         $path = $rp."/Uploads/Expression/" ;         if(!file_exists($path.$mycollection)){           mkdir($path.$mycollection,0777,true);         }         $path0=$rp.'/Uploads/Expression/'.$mycollection.'/'.$allname;         $file=file_get_contents($path0);         $map['md5']=md5($file);        $iexp_id=$iexpression->where($map)->getField('id');         if($iexp_id){             $map1['iexpression_id']=$iexp_id;             $map1['uid']=$uid;             $res=$iexplog->where($map1)->select();             if($res){                 echo json_encode('0');                 $iexp_path=$iexpression->where($map)->getField('path');                 if($iexp_path!="/Uploads/Expression/".$mycollection.'/'.$allname)                 {                     unlink($path0);                 }

Post获取name并进入了op_t函数
white OpenSNS任意文件删除+IIS6.0(getshell)
可以看见这是针对安全过滤,并没有针对路径跳转过滤
white OpenSNS任意文件删除+IIS6.0(getshell)
然后进行截取,很简单的就可以绕过的一种截取
white OpenSNS任意文件删除+IIS6.0(getshell)
这里就很狗血的一段了!进入数据库查询当查询出来的内容与我们输入的内容不符合的时候则删除不符合内容

本机先新建一个文件
white OpenSNS任意文件删除+IIS6.0(getshell)
这里去请求
white OpenSNS任意文件删除+IIS6.0(getshell)
white OpenSNS任意文件删除+IIS6.0(getshell)

未经允许不得转载:杂术馆 » OpenSNS任意文件删除+IIS6.0(getshell)
分享到: 更多 (0)