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

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

缺陷编号:wooyun-2014-083357

漏洞标题:BiWEB最新商城版任意文件上传getshell

相关厂商:BiWEB

漏洞作者: 路人甲

提交时间:2014-11-17 11:38

修复时间:2015-02-15 11:40

公开时间:2015-02-15 11:40

漏洞类型:文件上传导致任意代码执行

危害等级:中

自评Rank:10

漏洞状态:未联系到厂商或者厂商积极忽略

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-11-17: 积极联系厂商并且等待厂商认领中,细节不对外公开
2015-02-15: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

BiWEB最新商城版任意文件上传getshell

详细说明:

在wooyun上看到了有人提了BiWEB的一个XSS漏洞: WooYun: BIWEB商城版XSS盲打cookie ,也有人提了SQL注入,我来找找其他的漏洞吧。去官网下BiWEB商城版最新的5.8.4来看看。
在用户修改资料时,有一个上传执照图片的点,分析一下这个上传是不是会有任意文件上传的问题呢?
上传点在这里/user/adminu/licence.php
分析一下上传代码

无关代码
if ($_SERVER["REQUEST_METHOD"] == "POST"){
//图片上传
if ($_FILES['Filedata']['name'] != "") {
$strOldFile = $arrGPic['FileSavePath'].'s/'.$_POST['savefilename'];
if (is_file($strOldFile)) { // 缩略图删除
unlink($strOldFile);
}
$strOldFile = $arrGPic['FileSavePath'].'b/'.$_POST['savefilename'];
if (is_file($strOldFile)) { // 原文件删除
unlink($strOldFile);
}
$_POST['photo1'] = $objWebInit->uploadInfoImage($_FILES['Filedata'],'',$_POST['FileListPicSize'],$_POST['csize0'],$arrInfo['user_id']);
}else{
$_POST['photo1'] = $_POST['savefilename'];
}
// 取会员信息
$arrInfo['photo1'] = $_POST['photo1'];
//修改状态表明正在申请验证,必须设定为字符串形式
$arrInfo['pass'] = '0';
if (!empty($arrInfo)) {
$objWebInit->saveInfo($arrInfo,1);
echo "<script>" . check::WindowLocation('/user/adminu/licence.php')."</script>";
exit();
}
}
无关代码


调用了uploadInfoImage()方法,/web_common5.8/php_common.php

无关代码
if ($arrFile['error'] != 0) {
check::AlertExit('文件上传错误!('.$arrFile['error'].')',-1);
}
if ($arrFile['name']) {
$strFileType = strtolower($arrFile['type']);
if (!in_array( $strFileType , array( 'image/jpg','image/jpeg', 'image/gif' , 'image/pjpeg','image/png','image/x-png'))) {
check::AlertExit('文件类型不符合要求('.$arrFile['type'].')',-1);
}
}
无关代码


可以看到,这里只对filetype做了验证,也就是只对MIME做了一次验证,后面就没有别的验证了,这里问题就出来了。
直接上php马,然后修改Content-Type为“image/jpg','image/jpeg', 'image/gif' , 'image/pjpeg','image/png','image/x-png”中的任意一个都可以成功绕过检验完成上传。
下面上传一个php马试试,先来看看上传点

上传点副本.jpg


上传时,请先申请一个账号登陆,上传成功后的名称即你访问的你上传图片的路径,如上图。
修改Content-Type,以绕过MIME检测,如下图

包副本.jpg


上传成功,连刀看看效果

刀.JPG

漏洞证明:

见 详细说明

修复方案:

检测

版权声明:转载请注明来源 路人甲@乌云


漏洞回应

厂商回应:

未能联系到厂商或者厂商积极拒绝