HACK80 首页  立即注册  登录
现在注册
已注册用户请  登录
HACK80    技术文档

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

  •   juk小乖 ·2017-10-12 16:47:31·210 次点击 ·阅读模式     

    马上注册,加入HACK80!与我们一起交流。

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    漏洞文件:/Application/Weibo/Controller/IndexController.class.php
    1. public function uploadMyExp(){

    2.         $flag=1;
    3.         $uid=is_login();
    4.         $mycollection='mycollection';

    5.         $config = array(
    6.             'maxSize' => 5*1024*1024,
    7.             'rootPath' => './Uploads/',
    8.             'savePath' => 'Expression/'.$mycollection.'/',
    9.             'saveName' => '',
    10.             'exts' => array('jpg', 'gif','png','jpeg'),
    11.             'autoSub' => true,
    12.             'subName' => '',
    13.             'replace' => true,
    14.         );
    15.         if($_FILES['file']['size']<5*1024||$_FILES['file']['size']> 5*1024*1024){
    16.             echo json_encode('-3');
    17.             $flag=0;
    18.         }
    19.         $upload = new pload($config); // êμày&#187;ˉé&#207;′&#171;àà
    20.         $info = $upload->upload($_FILES);
    21.         if (!$info) { // é&#207;′&#171;′í&#206;óìáê&#190;′í&#206;óD&#197;&#207;¢
    22.             echo json_encode('-1');
    23.             $flag=0;
    24.         }
    复制代码
    获取当前登录的uid,然后获取上传的FILES进入upload
    1-6-1024x882.png
    正常的一个流程
    1-7-1024x623.png
    这里有一个check检测,跟进
    2-1024x212.png
    对后缀进行了检测.所以我们得必须满足后面.jpg这个条件
    3-1024x275.png
    文件名的控制
    4-1024x418.png
    当saveName为空时则true并截取我们上传的文件名
    5-1024x653.png
    最后则是检测后缀还有MIME类型,true则进入uplandfie.复现
    6-1024x449.png
    为了方便我var_dump了出来
    7.png
    成功上传
    任意文件删除:
    1. $name=I('post.name','','op_t');
    2.         $allname=substr($name,strrpos($name,'\')+1,strlen($name)-strrpos($name,'\')-1);
    3.        // $iname=substr($allname,0,strrpos($allname,'.'));
    4.         $rp= $this-> ROOT_PATH = str_replace('/Application/Weibo/Controller/IndexController.class.php', '', str_replace('\', '/', __FILE__));
    5.         $path = $rp."/Uploads/Expression/" ;
    6.         if(!file_exists($path.$mycollection)){
    7.           mkdir($path.$mycollection,0777,true);
    8.         }
    9.         $path0=$rp.'/Uploads/Expression/'.$mycollection.'/'.$allname;
    10.         $file=file_get_contents($path0);
    11.         $map['md5']=md5($file);
    12.        $iexp_id=$iexpression->where($map)->getField('id');
    13.         if($iexp_id){
    14.             $map1['iexpression_id']=$iexp_id;
    15.             $map1['uid']=$uid;
    16.             $res=$iexplog->where($map1)->select();
    17.             if($res){
    18.                 echo json_encode('0');
    19.                 $iexp_path=$iexpression->where($map)->getField('path');
    20.                 if($iexp_path!="/Uploads/Expression/".$mycollection.'/'.$allname)
    21.                 {
    22.                     unlink($path0);
    23.                 }
    复制代码
    Post获取name并进入了op_t函数
    1-8.png
    可以看见这是针对安全过滤,并没有针对路径跳转过滤
    2-1-1024x81.png
    然后进行截取,很简单的就可以绕过的一种截取
    3-1-1024x239.png
    这里就很狗血的一段了!进入数据库查询当查询出来的内容与我们输入的内容不符合的时候则删除不符合内容
    本机先新建一个文件
    4-1-1024x460.png
    这里去请求
    5-1.png
    6-1-1024x518.png

    210 次点击  
    收藏  转播  分享
    添加一条新回复
    您需要登录后才可以回帖 登录 | 立即注册

    本节点积分规则
    QQ
    小黑屋   ·   手机版   ·   228 人在线 最高记录 5500   ·   TOP
    我们很年轻,但我们有信念、有梦想!

      我们坚信只有今天付出了,才有机会看到明天的太阳!现在!加入我们,给你一个气氛优秀的技术圈子。  
    GMT+8, 2018-7-23 06:29, Processed in 0.046799 second(s), 21 queries .