当前位置: 当前位置:首页 > 热点 > xss绕过waf正文

xss绕过waf

作者:综合 来源:娱乐 浏览: 【大 中 小】 发布时间:2026-10-17 06:14:33 评论数:

xss绕过waf:别把过滤器当城墙

WAF(Web应用防火墙)不是神。它只是规则匹配器,就像机场安检,只查你兜里有没有刀,不查你脑子里有没有杀人计划。XSS绕过WAF的核心思路就一句话:让WAF看不懂你的payload,但浏览器能看懂。

先看个最蠢的例子。你提交``,WAF直接拦下。这没什么好说的,规则库第一页就写着。但如果你写成`ipt>`呢?WAF检查时发现``——WAF读到一半就放弃,规则根本没机会触发。这招对付那些性能差的WAF特别管用,但它们通常不承认自己只看前几KB,你测出来就是赚到。

再说个偏门的——换请求方式。很多WAF对GET请求检查严格,对POST宽松,因为POST里可能有富文本内容,误报率高。你把payload放POST体里,用`enctype=text/plain`提交,有些WAF直接不解析这种格式。或者用JSON格式,WAF对JSON的键值对解析经常有bug,你往value里塞payload,它只检查key。我见过一个真实案例,某大厂WAF对`application/json`请求只检查`data`字段,其他字段全放行。你写`{ "x":""}`,它愣是没反应。

别迷信大小写转换。WAF规则大多不区分大小写,但有些编码后的字符大小写转换会出问题。比如`%2f`是斜杠,WAF解码后检查,但如果你用`%2F`(大写F),某些WAF的数据库里存的是小写`%2f`,匹配不上。这种低级错误在开源WAF里常见,商业版偶尔也有。

最实用的技巧还是“事件替代”。`onerror`被拦就用`onmouseover`,`onfocus`被拦就用`onblur`。WAF规则库不可能覆盖所有事件,总有漏网的。配合``、``这类非HTML标准标签,规则库更新慢的WAF直接懵。我测试过某云厂商的WAF,``能过,``就拦。问为什么?规则库写得懒,只覆盖常见标签。

最后说句实在话。WAF绕过不是玄学,是信息差。你比WAF更懂浏览器解析机制,你就能赢。但别指望一套payload通杀所有WAF——每个产品的解码顺序、规则覆盖范围、性能限制都不一样。测试时带上抓包工具,看WAF到底拦的是哪一段,针对性改就行。这活儿跟开锁差不多,钥匙不对就换根铁丝,总能捅开。