小心字符集导致浏览器软件跨站脚本攻击

所属分类: 网络安全 / 漏洞分析 阅读数: 78
收藏 0 赞 0 分享
在一般的web程序里,显示数据给浏览器的时候都会指定一个字符集,在国内平时我们用到的字符集有utf-8,GBK,gb2312等等,字符集指示了浏览器该如何对待返回的数据。其中gb2312和GBK字符集使用得非常广泛,但是经证明,IE在处理这些宽字符集的时候存在问题,导致可能程序的一些安全规则被Bypass掉,引发严重的跨站脚本安全漏洞。在IE里,如果它遇到一个字符,它是指定字符集里的第一位的时候,就会认为其后续字符和当前字符构成一个合法的字符,这样它在解析包括html标签,处理javascript,Css时都会做如此考虑,测试版本为ie6和ie7。

1 Bypass某些js的检查规则


HTML]
[HEAD]
[TITLE]80sec test[/TITLE]
[meta http-equiv="Content-Type" content="text/html; charset=gb2312" /]
[/HEAD]
[BODY]
[script]
window.onerror=function(){
alert('Vul');
return true;
}
[/script]
[script]x='[?php echo chr(0xC1);?]';y='[User_IN_PUT]‘;[/script]
[/BODY]
[/HTML]


这里即使是过滤了〈>’\等字符一样可以利用非法字符集序列来实现\的作用,因为它会把原来存在的’给结合掉,然后前面的’找不到闭合,后面[User_IN_PUT]就可以用来执行js代码了。

2 Bypass某些属性的检查规则

为了避免直接使用html导致出现漏洞,一些论坛和程序使用了UBB标签,但是在gbk等多字节编码下,一样容易出现问题,以最容易出现问题的一个UBB标签为例子:


color=xyz[?php echo chr(0xC1);?]][/color][color=abc onmouseover=alert
(/xss/) s=[?php echo chr(0xC1);?]]exploited[/color]

0xC1是一个gb2312的第一个字节,上面结果将会转化为:

font color="xyz?][/font][font color="abc onmouseover=alert(/xss/) s=?]
exploited[/font]
其中的
alert(/xss/)

将会做一个事件执行,所以即使UBB标签也变得不安全,能饶过”的保护。许多论坛都没有注意这点,phpwind,动网等论坛就容易受到这种攻击。而Discuz通过在转换结果之后附加一个空格,修补了这一安全问题。这里使用到ubb标签其实有一个很有意思的tips在里面,因为有的数据库会抛弃与指定字符集不匹配的字符,所以必须借助后面的]等字符来形成一个有效的汉字才能存储到数据库里,当然像ACCESS这种就不会有问题了,另外一些语言在处理字符串的时候会强制字符串的字符集类型,不合法的字符会导致转码的失败或者遭到抛弃,所以也不能利用这种类型的攻击。

3 几个小例子

Phpwind论坛charset跨站脚本漏洞


[email=xxxx羃[/email][email=xxxx onmouseover=alert() s=羃]Fuck Me[/email]
[font=宋体;0xc1]xxx[/font]xx


羃是一个特殊的十六进制编码和后面的]结合出来的字符,第一个种方法可以直接复制的:)

0xc1表示一个十六进制的字符编码

同样在dvbbs论坛也很容易产生一个xss代码如下


xxxxxxxxxxx[/font]


均在新版和老版测试通过。

4 关于修复

对于程序设计者,由于UTF-8字符集的可靠性,不存在这个安全漏洞,所以大家在设计站点的时候可以考虑使用UTF-8字符集。

对于广大开发者,可以牢记最小输入等于最大安全的原则,在匹配正则的时候限制输入的字符的范围,尽量匹配ascii字符,如果必须使用中文,可以考虑类似于discuz的在中文后面添加空格修复该问题。

对于广大用户,这个漏洞由于浏览器处理页面字符的不同,可以考虑使用如Firefox浏览器,可以避免一部分这样的问题。
更多精彩内容其他人还在看

.Net开发人员常犯的6大安全错误

  微软已经为.Net环境添加了大量的功能,帮助开发人员创建安全的应用程序,例如,身份验证已经成为开发环境集成的一个功能,另外,默认情况下调试消息被禁用掉了。微软对安全的关注程度极大地影响了开发人员,促使他们在软件开发过程中重新评估纳入安全保障的重要性。
收藏 0 赞 0 分享

科汛 KesionCMS 文件名解析漏洞

科汛cms,eshop系统建站第一品牌.专业提供开源cms项目定制服务及名片系统,在线输出,在线印刷,广告制作,在线图文下单系统提供商。
收藏 0 赞 0 分享

科讯 kesioncms 5.5以下漏洞拿shell方法原理总结(图文)

科讯做为一个强大的cms程序大多被政府和教育机构网站所使用,关于科讯的漏洞利用教程网上不是很多。由于科讯的后台登陆需要输入认证码,而认证码没有保存在数据库而是保存在asp文件中,所以在某种程度上增大了拿shell 的难度。下面就个版本拿shell 的方法做一总结。
收藏 0 赞 0 分享

DISCUZ X1.5 本地文件包含漏洞说明

DISCUZX1.5 本地文件包含,当然是有条件的,就是使用文件作为缓存。
收藏 0 赞 0 分享

织梦网官方(dedecms)爆路径最新漏洞

  首发:红科网安   作者:Amxking   漏洞程序:dedecms5.5   测试对象:织梦网CMS官方网站   提交时间:2010-03-17   漏洞类型:信息泄露   危险等级:低   漏洞描述:   dedecms 5.5程序泄露网站路径信息。     测试地址:
收藏 0 赞 0 分享

ewebeditor通杀鸡肋0day漏洞

先访问这个地址 Editor/asp/upload.asp?action=save&type=image&style=popup&cusdir=a.asp 访问这个地址可以建立个A.ASP的文件夹…… 再用这个html代码
收藏 0 赞 0 分享

PHP漏洞全解

PHP网页的安全性问题,针对PHP的网站主要存在下面几种攻击方式
收藏 0 赞 0 分享

ecshop爆绝对路径的bug

  ecshop爆绝对路径的bug   网址如下"   http://www.zzfhw.com/ECShop/includes/fckeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/s
收藏 0 赞 0 分享

dedecms织梦 v5.5 两处跨站漏洞

  影响版本:   dedecms织梦5.5   漏洞描述:   demo1:http://www.dedecms.com/plus/search.php?keyword=%22>&searchtype=titlekeyword&channeltype=0&
收藏 0 赞 0 分享

dedecms 5.6的最新注入漏洞

  最新dedecms 5.6的注入代码:   http://www.dedecms.com/plus/rss.php?tid=1&_Cs[][1]=1&_Cs[2%29%29%20AND%20%22%27%22%20AND%20updatexml%281,%28
收藏 0 赞 0 分享
查看更多