### 简要描述: [Code Audit]EasyTalk任意文件删除漏洞【可重装,并可后台getshell】 ### 详细说明: 漏洞代码文件:/easytalk/Home/Lib/Action/settingAction.class.php文件 代码: ``` //保存头像 public function doface() { $ysw=$_POST['ysw']; if ($ysw>660) { $zoom=intval($ysw)/660; } else { $zoom=1; } $x=$_POST['x']*$zoom; $y=$_POST['y']*$zoom; $w=$_POST['w']*$zoom; $h=$_POST['h']*$zoom; $imgpath=ET_ROOT.$_POST['imgpath']; //imgpath过滤了一些参数,但../等未过滤,致使任意文件删除 $ext=strtolower(getExtensionName($imgpath)); // var_dump($imgpath);die; import("@.ORG.IoHandler"); $IoHandler = new IoHandler(); if(!isImage($imgpath)) { // var_dump($imgpath);die; $IoHandler->DeleteFile($imgpath); //ok了,任意文件删除 setcookie('setok', json_encode(array('lang'=>L('face2'),'ico'=>2)),0,'/'); header('location:'.SITE_URL.'/?m=setting&a=face'); exit; } $image_path = ET_ROOT.'/Public/attachments/head/'.date('Ymd').'/'; if(!is_dir($image_path)) { mkdir($image_path); } $f=date('His'); //大图片 import("@.ORG.makethumb"); $makethumb=new makethumb(); $filename=$f.'_big.'.$ext;...
### 简要描述: [Code Audit]EasyTalk任意文件删除漏洞【可重装,并可后台getshell】 ### 详细说明: 漏洞代码文件:/easytalk/Home/Lib/Action/settingAction.class.php文件 代码: ``` //保存头像 public function doface() { $ysw=$_POST['ysw']; if ($ysw>660) { $zoom=intval($ysw)/660; } else { $zoom=1; } $x=$_POST['x']*$zoom; $y=$_POST['y']*$zoom; $w=$_POST['w']*$zoom; $h=$_POST['h']*$zoom; $imgpath=ET_ROOT.$_POST['imgpath']; //imgpath过滤了一些参数,但../等未过滤,致使任意文件删除 $ext=strtolower(getExtensionName($imgpath)); // var_dump($imgpath);die; import("@.ORG.IoHandler"); $IoHandler = new IoHandler(); if(!isImage($imgpath)) { // var_dump($imgpath);die; $IoHandler->DeleteFile($imgpath); //ok了,任意文件删除 setcookie('setok', json_encode(array('lang'=>L('face2'),'ico'=>2)),0,'/'); header('location:'.SITE_URL.'/?m=setting&a=face'); exit; } $image_path = ET_ROOT.'/Public/attachments/head/'.date('Ymd').'/'; if(!is_dir($image_path)) { mkdir($image_path); } $f=date('His'); //大图片 import("@.ORG.makethumb"); $makethumb=new makethumb(); $filename=$f.'_big.'.$ext; $dst_file = $image_path.$filename; $make_result = $makethumb->dothumb($imgpath,$dst_file,max(10,min(120,$w)),max(10,min(120,$h)),0,0,$x,$y,$w,$h); //小图片 $filename=$f.'_small.'.$ext; $dst_file = $image_path.$filename; $make_result = $makethumb->dothumb($imgpath,$dst_file,max(10,min(50,$w)),max(10,min(50,$h)),0,0,$x,$y,$w,$h); $IoHandler->DeleteFile($imgpath); M('Users')->where("user_id='".$this->my['user_id']."'")->setField('user_head',date('Ymd').'/'.$filename.'?v='.time()); $plugin= A('Appaction'); $plugin->do_action('saveface'); setcookie('setok', json_encode(array('lang'=>L('face1'),'ico'=>1)),0,'/'); header('location:'.SITE_URL.'/?m=setting&a=face'); } ``` 任意文件删除,可以删除360的防护脚本(:(),进行注入获取管理密码(全局过滤,注入很少了),或者,当然此处删除安装锁,然后进行系统重装,只需找随便找一台开启mysql外连的服务器即可,进行安装,然后进入后台。 漏洞截图: pic-a,此处删除/Public/install.lock文件 [<img src="https://images.seebug.org/upload/201404/07100302aa6d8ea55e09b7ba0d01868705c78e55.jpg" alt="QQ拼音截图未命名.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201404/07100302aa6d8ea55e09b7ba0d01868705c78e55.jpg) 进行重装后进入后台,进行getshell 此处利用后台的ucenter整合功能。 先本地搭建个ucenter(discuz后台即有该功能),新建个应用,获得配置的信息代码,然后在代码中加入一句话木马即可,如图pic-2 <img src="https://images.seebug.org/upload/201404/07100646a6928200bcb2fa703a04cbe9d3b7cf1e.jpg alt="b.jpg" /> 然后一句话连接地址为:/easytalk/admin.php?s=/Setting/ucenter 如图pic-c [<img src="https://images.seebug.org/upload/201404/07100859b113a1a881838bebcbe0d8094b84aa67.jpg" alt="d.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201404/07100859b113a1a881838bebcbe0d8094b84aa67.jpg) ### 漏洞证明: 如上详细描述