XSS反射型:
原理:
<非持久化>
攻击者事先制作好攻击链接, 需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。
低级
步骤:
- 代码分析
代码直接引用了name参数,并没有任何的过滤与检查,存在xss漏洞
正常情况下:输入什么显示
- 输入攻击代码:
<script>alert(/xss/)</script>
- 结果显示,成功弹窗。
中级
步骤
- 代码分析:对输入进行了过滤,使用str_replace函数将输入中的< script>删除。
- 使用低级测试:证实把< script>过滤掉了。
- 使用双写绕过:
< sc<script>ript>alert(/xss/)</script>
- 结果显示:攻击成功。
高级
步骤: - 代码分析
High级别的代码同样使用黑名单过滤输入,preg_replace()函数用于正则表达式的搜索和替换,这使得双写绕过、大小写混淆绕过(正则表达式中i表示不区分大小写)不再有效。
- 利用中,低级代码测试:
中,低级显示结果一样,如下图:
- 输入攻击代码:
解决:无法使用< script>标签注入XSS代码,但是可以通过img、body等标签的事件或者iframe等标签的src注入恶意的js代码
代码:<img src=1 onerror=alert(/xss/)>
- 结果显示:攻击成功。