漏洞原理:
服务器对用户提交的数据过滤不严,导致浏览器把用户的输入当成了JS代码并直接返回给客户端执行
漏洞防御:
- 输入过滤(白名单和黑名单)
- 输入验证
- 数据消毒
- 输出编码
漏洞验证:
环境 | Windows |
靶场 | dvwa |
如果我们在搜索框输入的内容原样返回,没有被过滤或者实体编码,则存在xss漏洞
但是这种测试太明显,容易被waf 等防御措施发现 XSS 攻击的特征,从而封掉 ip 等。
我们可以测试代码是否可以原样返回
比如输入a>/ (这里是终极模式)
发现关键字符被 HTML 实体编码,说明此 XSS 漏洞不可利用
总结:就是不要直接输入明显的xss注入手法,可以分开进行测试,输入xss漏洞的关键部分。