漏洞概要
关注数(24)
关注此漏洞
漏洞标题:soso主站反射型跨站(如何突破短的限制)
相关厂商:搜狗
提交时间:2014-06-07 13:57
修复时间:2014-07-23 22:04
公开时间:2014-07-23 22:04
漏洞类型:xss跨站脚本攻击
危害等级:低
自评Rank:5
漏洞状态:厂商已经确认
Tags标签:
无
漏洞详情
披露状态:
2014-06-07: 细节已通知厂商并且等待厂商处理中
2014-06-09: 厂商已经确认,细节仅向厂商公开
2014-06-19: 细节向核心白帽子及相关领域专家公开
2014-06-29: 细节向普通白帽子公开
2014-07-09: 细节向实习白帽子公开
2014-07-23: 细节向公众公开
简要描述:
soso主站反射型跨站,其中遇到一个过chrome xssfilter的方法,也有突破短的限制,refferer伪造等猥琐的方法,执行任意js。算是一次艰难的弹框之旅吧,所以发上来大家讨论下
详细说明:
在对soso进行测试的时候发现
发现控制台报错了,心中窃喜查看源代码,果然存在问题:
下面就是怎么过浏览器xss filter的问题:
无疑会被chrome的xss filter拦截,但是当我在onerror后面加一个%0a后就不拦截了,变成了
成功alert
正当我窃喜之际,新的问题又出现,竟然有长度限制,我要的效果是远程加载任意js,一个弹框当然不能满足我
不过绕过限制也很简单,可以利用window.name可以跨域的特性,我们可以构造如下代码
保存为test.html,满怀欣喜的去访问
结果却没有任何反应,百思不得其解,难道是修复了?然后我把链接复制到地址栏重新打开却是可以的?
突然我灵光一闪,难道是?验证了refferer
果然
那我们要如何构造一个空的refferer呢?也就是伪造refferer
直接上代码:
解释:
利用about:blank协议构造空的refferer,用window.name跨域传输跨站代码,突破短的限制。让后用top.location.href跳转回soso的链接。
顺利加载远程js
但是这个代码只能在chrome上运行,在firefox上并不能运行,原因是在firefox上不能伪造
refferer。
总结:
1、利用</script>跳出script
2、利用%0a过chrome xss filter
3、利用window.name突破短的限制
4、利用iframe伪造refferer
最后顺利执行跨站代码
关于firefox的伪造refferer以后再深入研究。
漏洞证明:
在chrome下访问:
或者访问,弹框
修复方案:
漏洞回应
厂商回应:
危害等级:低
漏洞Rank:2
确认时间:2014-06-09 10:58
厂商回复:
收到,感谢支持,欢迎到SGSRC提交漏洞!
最新状态:
暂无
漏洞评价:
评论