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

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

缺陷编号:wooyun-2014-068366

漏洞标题:Ecmall 前台任意文件删除

相关厂商:ShopEx

漏洞作者: ′雨。

提交时间:2014-07-14 10:12

修复时间:2014-10-09 10:14

公开时间:2014-10-09 10:14

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

危害等级:高

自评Rank:20

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

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

删除lock之后可以重装系统
然后连接上自己搭建的mysql环境 重装后 。。。。然后就各种操作。
20140618

详细说明:

在app/my_goods.app.php中

function drop_image()
{
$id = empty($_GET['id']) ? 0 : intval($_GET['id']);
$uploadedfile = $this->_uploadedfile_mod->get(array(
'conditions' => "f.file_id = '$id' AND f.store_id = '{$this->_store_id}'",
'join' => 'belongs_to_goodsimage',
'fields' => 'goods_image.image_url, goods_image.thumbnail, goods_image.image_id, f.file_id',
));
if ($uploadedfile)
{
$this->_uploadedfile_mod->drop($id);
if ($this->_image_mod->drop($uploadedfile['image_id']))
{
// 删除文件
if (file_exists(ROOT_PATH . '/' . $uploadedfile['image_url']))
{
@unlink(ROOT_PATH . '/' . $uploadedfile['image_url']);
}
if (file_exists(ROOT_PATH . '/' . $uploadedfile['thumbnail']))
{
@unlink(ROOT_PATH . '/' . $uploadedfile['thumbnail']);
}


$uploadedfile = $this->_uploadedfile_mod->get(array(
'conditions' => "f.file_id = '$id' AND f.store_id = '{$this->_store_id}'",
'join' => 'belongs_to_goodsimage',
'fields' => 'goods_image.image_url, goods_image.thumbnail, goods_image.image_id, f.file_id',


这里查询出来后 然后就带入到了unlink当中
这里哪里入库呢?
首先注册一个会员 然后发布商品 然后

e90.jpg


这里别去上传文件 直接在地址处这样写
然后入库 而且不会被重命名。
此时执行的语句 INSERT INTO ecm_goods_image(goods_id,image_url,thumbnail,sort_order,file_id) VALUES('1','data/install.lock','data/install.lock','255','0')
没有rename
然后在删除这个商品的时候
就触发了 @unlink(ROOT_PATH . '/' . $uploadedfile['image_url']);

e91.jpg


e92.jpg


因为

if (file_exists(ROOT_PATH . '/' . $uploadedfile['image_url']))
{
@unlink(ROOT_PATH . '/' . $uploadedfile['image_url']);
}
if (file_exists(ROOT_PATH . '/' . $uploadedfile['thumbnail']))
{
@unlink(ROOT_PATH . '/' . $uploadedfile['thumbnail']);


他这里unlink了两次 所以第一次unlink后 文件就不存在了 第二次unlink的时候就报错了 但是没影响 因为文件是已经删除了的。
然后直接重装

e93.jpg


然后写自己的mysql环境就能重装 然后各种操作了。

漏洞证明:

见上。

修复方案:

rename一下。

版权声明:转载请注明来源 ′雨。@乌云


漏洞回应

厂商回应:

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

忽略时间:2014-10-09 10:14

厂商回复:

最新状态:

暂无