漏洞概要
关注数(24)
关注此漏洞
漏洞标题:iwebshop某处设计缺陷导致大面积注入
提交时间:2015-10-27 17:25
修复时间:2015-12-17 14:48
公开时间:2015-12-17 14:48
漏洞类型:SQL注射漏洞
危害等级:高
自评Rank:20
漏洞状态:厂商已经确认
Tags标签:
无
漏洞详情
披露状态:
2015-10-27: 细节已通知厂商并且等待厂商处理中
2015-10-31: 厂商已经确认,细节仅向厂商公开
2015-11-03: 细节向第三方安全合作伙伴开放(绿盟科技、唐朝安全巡航)
2015-12-25: 细节向核心白帽子及相关领域专家公开
2016-01-04: 细节向普通白帽子公开
2016-01-14: 细节向实习白帽子公开
2015-12-17: 细节向公众公开
简要描述:
iwebshop_v4.1.15091900最新版
某个函数写的不规范
详细说明:
出现在sql处理函数上
看到iwebshop4.1/lib/web/model/model_class.php
看到这里只是把值转小写然后=='all' php是弱类型所以 xxxxx和all用==比较的值是一样为1的,所以值就为' WHERE '.$where;可以看到没有单引号包含
最后拼接sql语句然后带入查询
原因出现在这里
存在数组里就$updateStr.= '`'.$key.'` = '.$val; 所以没有单引号包含
我们来搜索下有哪里调用了
数量还挺多的
选了一处来测试
/controllers/member.php
$id = IFilter::act(IReq::get('id'));这里没有过滤转换类型就传入了
$sellerObj->update("id = ".$id);最后带入了查询
可以看到带入sql语句了
而且没有单引号也不用担心gpc
漏洞证明:
出现在sql处理函数上
看到iwebshop4.1/lib/web/model/model_class.php
看到这里只是把值转小写然后=='all' php是弱类型所以 xxxxx和all用==比较的值是一样为1的,所以值就为' WHERE '.$where;可以看到没有单引号包含
最后拼接sql语句然后带入查询
原因出现在这里
存在数组里就$updateStr.= '`'.$key.'` = '.$val; 所以没有单引号包含
我们来搜索下有哪里调用了
数量还挺多的
选了一处来测试
/controllers/member.php
$id = IFilter::act(IReq::get('id'));这里没有过滤转换类型就传入了
$sellerObj->update("id = ".$id);最后带入了查询
可以看到带入sql语句了
而且没有单引号也不用担心gpc
修复方案:
应该这样写
版权声明:转载请注明来源 Xser@乌云
漏洞回应
厂商回应:
危害等级:低
漏洞Rank:3
确认时间:2015-10-31 21:35
厂商回复:
1,处理思路不应该从IModel的update value强制加引号,这样会导致部分mysql函数的值无法写入,比如: update iwebshop_goods set time=NOW(); 如果按照写入值强制引号的思路,那么sql就变成了: update iwebshop_goods set time="NOW()"; 解决的方式还是应该在IReq::get('参数'); 通过不同的数据类型进行不同的转换。
2,测试报告里面的用例都是后台专用的控制器和方法,必须具有管理员的权限,意义不是很大。
最新状态:
暂无
漏洞评价:
评价