一、xss注入的思路
- 在目标网站找到注入的点,例如注册,留言,搜索,提交,评论等页面
- 在注入点输入一些字符,' " < > script alert javascript,点击提交查看是否被过滤。
- 通过未过滤的语句判断是否可以进行js代码的编写
- 提交构造的脚本,或者通过绕过的方式查看源码,判断是否存在xss漏洞
- 一般查询接口、用户登录、搜索、订单提交容易出现反射型XSS,留言板、评论、用户昵称、用户信息等凡是可以提交数据由服务器进行存储和显示的位置都有可能出现存储型跨站容易出现存储型XSS;
二、xss漏洞挖掘
1.输出在标签外
尝试输入一些关键字符,判断是否可以被过滤掉,然后尝试闭合前边的,构造新的标签。
输入payload:</span><script>onclick:alert(1)</script>
2.输出在标签内部
2.1 如果在引号内部,可以闭合,构造新的属性,存在xss漏洞
payload:'><img src=1 οnerrοr=alert(1)>
2.2在标签内部,不能闭合,判断该标签能不能支持JavaScript代码,如果支持就存在,不支持就不存在。
2.3.在引号外部
payload:autofocus='true' οnfοcus=alert(1) ,直接写属性即可实现
3.输出在JavaScript代码中<script>输出位置</script>
3.1 能闭合引号,直接插入js代码,后边可以效能则注释
payload: ";alert(1) //
3.2不能闭合引号
(1)使用document.write 输出到页面里,
(2)使用inner.HTML 输出到页面里
3.3输出在引号外部
直接输入js代码即可
三、xss漏洞的防护
XSS的威力主要是取决于JavaScript能够实现的程度,XSS跨站脚本的形成原因是对输入输出没有严格过滤,导致在页面上可以执行JavaScript等客户端代码,所以只要将敏感字符过滤,就可以修复XSS跨站漏洞。
总结:输入做过滤,输出做转义(编码)