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

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

缺陷编号: WooYun-2013-33188

漏洞标题: ECShop GBK版json解析模块可致拒绝服务

相关厂商: ShopEx

漏洞作者: monster

提交时间: 2013-08-01 18:39

公开时间: 2013-10-30 18:40

漏洞类型: 拒绝服务

危害等级: 中

自评Rank: 10

漏洞状态: 厂商已经确认

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

Tags标签: 无

2人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2013-08-01: 细节已通知厂商并且等待厂商处理中
2013-08-02: 厂商已经确认,细节仅向厂商公开
2013-08-05: 细节向第三方安全合作伙伴开放(绿盟科技唐朝安全巡航无声信息
2013-09-26: 细节向核心白帽子及相关领域专家公开
2013-10-06: 细节向普通白帽子公开
2013-10-16: 细节向实习白帽子公开
2013-10-30: 细节向公众公开

简要描述:

ECShop GBK版json解析模块有点问题
当提交恶意json数据时可致php死循环。

详细说明:

includes/cls_json.php文件

code 区域
212     function str()
213 {
214 $i = '';
215 $s = '';
216 $t = '';
217 $u = '';
218
219 if ($this->ch == '"')
220 {
221 while ($this->next() !== null)
222 {
223 if ($this->ch == '"')
224 {
225 $this->next();
226
227 return $s;
228 }
229 elseif ($this->ch == '\\')
230 {
231 switch ($this->next())
232 {
233 case 'b':
234 $s .= '\b';
235 break;
236
237 case 'f':
238 $s .= '\f';
239 break;
240
241 case 'n':
242 $s .= '\n';
243 break;
244
245 case 'r':
246 $s .= '\r';
247 break;
248
249 case 't':
250 $s .= '\t';
251 break;
252
253 case 'u':
254 $u = 0;
255
256 for ($i = 0; $i < 4; $i++)
257 {
258 $t = (integer) sprintf('%01c', hexdec($this->next()));
259
260 if (!is_numeric($t))
261 {
262 break 2;
263 }
264 $u = $u * 16 + $t;
265 }
266
267 $s .= chr($u);
268 break;
269 case '\'':
270 $s .= '\'';
271 break;
272 default:
273 $s .= $this->ch;
274 }
275 }
276 else
277 {
278 $s .= $this->ch;
279 }
280 }
281 }
282
283 $this->error('Bad string');
284 }



注意221行。next()的返回值与null是三等号。。。

再看next()的代码

code 区域
197     function next()
198 {
199 $this->ch = !isset($this->text{$this->at}) ? '' : $this->text{$this->at};
200 $this->at++;
201
202 return $this->ch;
203 }



这里当at索引的值不存在时返回的是''。。。

再回到上面。221行就死循环了

漏洞证明:

随便找个用到json的地方测试。。以/flow.php?step=add_to_cart为例

够造如下表单

code 区域
<form action="http://**.**.**.**/shop/flow.php?step=add_to_cart" method="post">
<input name="goods_id" value="1"><br>
<input name="goods" value="&quot;"><br>
<input type="submit">
</form>



。。。提交后卡了30秒。然后返回了。。(返回的时候还报了sql错误。不知道这是为什么,我本地测试是没有的)

10046399-665D-4BAB-B4AD-DB2F6B1910CE.png



本地测试下。。。原来cpu0.0%

111.png



..请求一次以后

222.png



CPU瞬间98%。。。

趁页面卡在那里不动。。。多点几次提交按钮。。大概狂点了20秒。。

再访问一次主页

3333.png



已经死了的样子。。mysql连不了了。。

我机器风扇已经转地和狗一样了。。

修复方案:

用二等号就好了。。不要用三等号

版权声明:转载请注明来源 monster@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:7

确认时间:2013-08-02 23:04

厂商回复:

非常感谢您为shopex信息安全做的贡献
我们将尽快修复
非常感谢

最新状态:

暂无


漏洞评价:

对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值

漏洞评价(共0人评价):
登陆后才能进行评分

评价

  1. 2013-08-01 19:10 | xsser 认证白帽子 ( 普通白帽子 | Rank:297 漏洞数:22 | 当我又回首一切,这个世界会好吗?)
    1

    这尼玛也可以?

  2. 2013-08-01 19:14 | monster ( 实习白帽子 | Rank:70 漏洞数:10 )
    1

    @xsser 不知道会不会被忽略。。。官方是utf8的。。不然直接把官方打死好了

  3. 2013-08-01 21:10 | 0x0F ( 普通白帽子 | Rank:231 漏洞数:60 | 尖刀安全 (JDSec.Com).......................)
    1

    求打死。@xsser 劈了不?

  4. 2013-08-02 09:02 | 黑色的屌丝 ( 实习白帽子 | Rank:39 漏洞数:6 | →_→→_→)
    1

    尼玛,这都可以?

登录后才能发表评论,请先 登录