[XSS] 51CTO博客IE6跨站漏洞解析

在编辑旧的博文时,发现新版编辑器插入特定HTML代码不能正确显示。比如“<script type="text/javascript" src="test.js"></script>”或者“<link rel="stylesheet" type="text/css" href="test.css">”。发布后它们的最终页面显示效果如下图所示:

222920622.jpg

初步判断是由于编辑器内部对某些字符进行转义引起的问题,于是重新进入编辑器的源代码模式查看,发现源代码中已经将"<",">"之类的符号转义成"&lt;"和"&gt;",而其他字符并没有做任何处理,因此可以进一步判断是在页面载入时才对字符进行过滤,并且根据显示的结果,可以猜测是"src"和"href"。于是再次进入源代码模式,将"src"中的"s"替换为"&#115;",将"href"中的"h"替换为"&#104;",修改完成后直接保存发布,效果如下:

224641230.jpg

至此页面已经完全可以正常显示,证实的确是由于前端过滤引起的HTML显示异常。即然系统可以通过此种方式绕过过滤,那么是否也存在相应的XSS漏洞。为此进行了进一步试验,在正文中写入"<script>alert(1);</script>",并将"<"、">"等字符全部替换成ASCII码,保存发布,效果如下:

230420780.jpg

此次试验并没有达到预期效果,哪怕将"<"或">"全部转义,源代码中依然是"&lt;"和"&gt;",而页面中插入的<img>标签却可以正常显示,因此猜测<img>标签可以被利用。据此再次试验,写入<img>标签并设置src属性的值为"javascript:alert(1);",接着进入源代码模式,将其中的"s"替换为"&#115;",保存发布,效果如下:

233312420.jpg

试验结果比较出乎意料,并没有弹出框生成,且在页面上直接查看HTML源代码显示的是"src=\'#\'"。但是同样的格式"src=http://......" 却不会被系统过滤,因而怀疑只有当src属性值中以"j"开头时才会处理,于是重复上一步试验,只不过改为将"j"替换成"&#106;",保存发布,效果如下:

234136587.jpg


注:src执行javascript在低版本IE下(如IE6)有效,高版本浏览器无法复现。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值