常规WAF绕过思路
1.标签语法替换
<a href="">、<img src="">、<script src="">等
2.特殊符号干扰
/ %#^&··········
其中"/"在html中表示结束的意思
3.提交方式更改
从图中可以看到,安全狗对XSS的防护有URL层面,COOKIE层面,个别的也有POST层面
当变量name以post方式提交时,安全狗并没有拦截 (前提时对方支持以post这种提交方式发送)
4.垃圾数据溢出
垃圾数据就是加些乱七八糟的干扰,尝试绕过
5.加密解密算法
例如:Javascript可以用Unicode编码变成"Javascript",通过多种变形然后去绕过WAF,但前提是网站支持这些加解密。
6.结合其他漏洞绕过
XSS自动化工具:
https://github.com/s0md3v/XSStrike(XSStrike推荐:可找漏洞也可绕WAF,全自动化)
工具说明如图:
还有一款Xwaf:https://github.com/3xp10it/xwaf(具体没实测)
还有一篇关于绕过XSS检测机制的详细文章:https://bbs.pediy.com/thread-250852.gtm
补充:安全狗4.0绕过技巧<input type="text" onclick="alert(1)">
修复建议:
- 开启httponly
- 输入过滤:接收时使用 php的htmlspecialchars() python的cgi.escape() java的xssprotect()等函数过滤掉前端输入进来的脚本代码。
- 输出过滤:对相关输出到页面的值进行过滤。