当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2014-055812

漏洞标题:EasyTalk任意文件删除漏洞(可后台getshell)

相关厂商:nextsns.com

漏洞作者: Ano_Tom

提交时间:2014-04-07 12:13

修复时间:2014-07-06 12:14

公开时间:2014-07-06 12:14

漏洞类型:设计缺陷/逻辑错误

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-04-07: 细节已通知厂商并且等待厂商处理中
2014-04-07: 厂商已经确认,细节仅向厂商公开
2014-04-10: 细节向第三方安全合作伙伴开放
2014-06-01: 细节向核心白帽子及相关领域专家公开
2014-06-11: 细节向普通白帽子公开
2014-06-21: 细节向实习白帽子公开
2014-07-06: 细节向公众公开

简要描述:

[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文件

QQ拼音截图未命名.jpg


进行重装后进入后台,进行getshell
此处利用后台的ucenter整合功能。
先本地搭建个ucenter(discuz后台即有该功能),新建个应用,获得配置的信息代码,然后在代码中加入一句话木马即可,如图pic-2
<img src="https://wooyun-img.oss-cn-beijing.aliyuncs.com/upload/201404/07100646a6928200bcb2fa703a04cbe9d3b7cf1e.jpg alt="b.jpg" />
然后一句话连接地址为:/easytalk/admin.php?s=/Setting/ucenter
如图pic-c

d.jpg


漏洞证明:

如上详细描述

修复方案:

过滤等。一切来自用户的输入都是不可信的,速度修复。

版权声明:转载请注明来源 Ano_Tom@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2014-04-07 12:58

厂商回复:

感谢作者的反馈

最新状态:

暂无


漏洞评价:

评论

  1. 2014-04-13 14:35 | 猪头子 ( 普通白帽子 | Rank:189 漏洞数:35 | 自信的看着队友rm -rf/tar挂服务器)

    WooYun: EasyTalk X2.0.2 前台任意文件删除漏洞 楼主你提交的和我之前提交的这个一样么?

  2. 2014-04-13 18:20 | Ano_Tom ( 普通白帽子 | Rank:368 漏洞数:40 | Talk is cheap.:)

    @猪头子 额,刚看了下是的,漏洞文件是一样的,我看的这个函数改名成doface了。doface函数在另一个文件也有,是注册用户控制器文件,竟然还没修复。对了,我发的另一个thinksns文件包含是参考楼主发的thinkphp分析那个,感谢。

  3. 2014-04-13 20:21 | 猪头子 ( 普通白帽子 | Rank:189 漏洞数:35 | 自信的看着队友rm -rf/tar挂服务器)

    @Ano_Tom ........好吧

  4. 2014-04-17 09:10 | 小新 ( 普通白帽子 | Rank:129 漏洞数:19 | 我可是要成为普通白帽子的小新)

    @猪头子 我还以为这个是你号来着

  5. 2014-04-17 09:31 | Ano_Tom ( 普通白帽子 | Rank:368 漏洞数:40 | Talk is cheap.:)

    @小新 呵呵

  6. 2014-04-17 10:01 | 小新 ( 普通白帽子 | Rank:129 漏洞数:19 | 我可是要成为普通白帽子的小新)

    @Ano_Tom 大牛,早上好