漏洞概要 关注数(24) 关注此漏洞
缺陷编号:wooyun-2013-024290
漏洞标题:蘑菇街绕过过滤机制继续持久XSS
相关厂商:蘑菇街
漏洞作者: Demon
提交时间:2013-05-23 14:53
修复时间:2013-07-07 14:54
公开时间:2013-07-07 14:54
漏洞类型:xss跨站脚本攻击
危害等级:低
自评Rank:5
漏洞状态:厂商已经确认
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
Tags标签: 无
漏洞详情
披露状态:
2013-05-23: 细节已通知厂商并且等待厂商处理中
2013-05-24: 厂商已经确认,细节仅向厂商公开
2013-06-03: 细节向核心白帽子及相关领域专家公开
2013-06-13: 细节向普通白帽子公开
2013-06-23: 细节向实习白帽子公开
2013-07-07: 细节向公众公开
简要描述:
蘑菇街过滤机制存在缺陷存储型XSS
详细说明:
导致xss的地方是专辑名称,其实导致xss的地方有两处,一是专辑首页有源代码<a title="xxx">xxx</a> 其中xxx就是专辑名称,二是点进该专辑,然后下方有处分享到各大网站的功能,源代码有<div data="....xxx"> 此处引用了专辑标题,由于没有过滤双引号导致两处xss发生的可能,先加个"> 发现代码两处均侧漏,如图:
我们首先会想到采用"><script>alert(1)</script>这种方式来进行代码植入,其实是不行的,当闭合掉原来标签的时候,标签之外字符串就被转义了,也就是上述的<script>以及之后的所有<>均被转义,所以只能采用触发事件导致XSS,但是蘑菇街有他自己的过滤方式。各大事件属性大部分被过滤,比如onload onfocus expression style= alert( onclick 等等好多都被过滤掉了。一开始我以为只是过滤为空,所以测试过使用 ononloadload 这种方式去测试,后来才发现原来过滤的字符替换成了一个空白键。由于我用firefox没有显现出来,所以纳闷了好久,用IE的时候才发现被替换掉了。第二处存在于div标签中,style= 字符串被替换成了空白键,所以使用expression这种方式是行不通了。而绕过alert( 则是可能,使用alert/**/(1)就可以绕过其过滤机制,而且有少部分事件属性并未过滤,这里我采用了onmousewheel属性,就是一个没用过滤的事件,我们在专辑填入dd"/onmousewheel=alert/**/(1)//> 发现在标签处滑动鼠标滚轮,成功弹窗,因为在>之前也会加个空白键,所以后面用//防止代码失效。如图:
两处均发生xss,IE下测试成果,firefox不兼容此事件,所以没有成功。或许还有其他事件没有过滤,这里就没测试了。觉得用户使用滚轮的概率还挺高的。
漏洞证明:
修复方案:
过滤双引号和<>,而且采用黑名单的方式是不安全的。
版权声明:转载请注明来源 Demon@乌云
漏洞回应
厂商回应:
危害等级:中
漏洞Rank:9
确认时间:2013-05-24 10:00
厂商回复:
非常感谢您的报告。这个问题我们已经确认,会尽快修复,谢谢。
最新状态:
暂无