从一脸懵到轻松绕过:Awesome-WAF 帮你 3 步吃透 Web 应用防火墙攻防测试 从一脸懵到轻松绕过Awesome-WAF 帮你 3 步吃透 Web 应用防火墙攻防测试【免费下载链接】Awesome-WAFEverything about Web Application Firewalls (WAFs) from Security Standpoint! 项目地址: https://gitcode.com/gh_mirrors/aw/Awesome-WAFAwesome-WAF 是一个把 Web 应用防火墙WAF相关知识一网打尽的开放资源库从安全视角整理了工作原理、识别指纹、测试方法与绕过技巧还附带了现成脚本、工具清单和论文演讲。这篇笔记不打算照搬目录而是跟着一次真实测试的节奏走先搞清楚对手是谁再摸清它拦什么最后找到钻过去的路。读完你会发现WAF 攻防测试没想象中那么玄乎。️深夜我的所有 payload 都被一道看不见的墙拦下了故事要从上个月说起。我接了一个授权的渗透测试项目客户是家电商公司目标是一个登录接口。测试进行到一半画风突然不对了所有带参数的请求回来的都是同一个冷冰冰的拦截页连一个单引号都送不进去。最难受的不是被拦而是我连对面站的是谁都搞不清楚——是云厂商的防护是机房里的硬件盒子还是开源的 ModSecurity不知道对手就不知道往哪个方向使劲。那晚我翻开了 Awesome-WAF整个过程像突然拿到了攻略。它解决的第一件事就是让你看得见对面那道墙。先把对手看清楚WAF 到底在拦截什么说句大白话WAF 就像站在网站门口的电子门卫。用户请求先经过它可疑的流量被当场拦下正常的放行进站。它看的不是人的脸而是请求里的特征参数里有没有 SQL 注入的痕迹、有没有script这类脚本标签、路径里有没有穿越的迹象。这个项目把 WAF 的工作模式总结成了三种理解它们比背十条规则更重要黑名单模式负向模型手里攥着一堆坏人特征命中就拦比如看到script就屏蔽。简单直接但只防已知攻击。白名单模式正向模型只放行符合规则的流量比如只允许特定 IP 发 GET 请求。拦得严误伤也多适合内部系统。混合模式对外用黑名单挡大范围攻击对内网管理后台用白名单两边都照顾到。现实中大部分部署都是这种。一句话总结WAF 站在流量必经之路上当门卫。而攻防测试的起点恰恰是搞清楚这个门卫到底是谁、靠什么规则拦人。第一步只凭几次请求认出对面是哪家 WAF很多新手一上来就闷头打 payload被拦了才回头看——这就本末倒置了。正确的姿势是先让 WAF 暴露身份。项目里那张超长的指纹表就是干这个用的。所谓指纹就是各家 WAF 在拦截时留下的记号。常见的观察窗口有四个观察窗口典型特征例子响应头自定义 Header 或 Server 字段X-Powered-By-Anquanbao、WZWS-RayCookie请求里多出专属 CookieAL-SESS、Yunsuo 相关标识响应码拦截时返回特殊状态码360 返回 493、阿里云盾返回 405拦截页面页面文字或引用资源带品牌特征Sorry! Your access has been intercepted光守株待兔还不够有时候你得主动挑衅几下让门卫忍不住出手。项目里教了几个很实用的触发动作往搜索框丢一个scriptalert()/script在 URL 末尾随便挂个 OR SLEEP(5) OR 用 cURL 不带 UA 地发请求看响应差异甚至试试 HTTP/0.9 这种老掉牙的协议。门卫一出手指纹就露出来了。嫌手工慢的话仓库里还推荐了 wafw00f 和 IdentYwaf 这类指纹识别工具几秒钟扫完一批特征库直接报出疑似品牌。这一步的目的不是炫技而是给后面的测试定方向——知道对面是黑名单还是白名单思路完全不同。第二步像拆盲盒一样一层层剥开它的过滤规则认出品牌只是开始。真正决定能不能绕过的是它具体过滤了哪些关键词。这个项目里有一段非常经典的演示黑名单探测。思路很朴素——一步步发 payload观察哪个词被拦从而反推它背后的正则规则。拿 SQL 注入举例整个过程就像拆盲盒轮次被过滤的关键词被拦的尝试换个姿势第 1 轮and、or、unionunion select ...1 \|\| (select ... ) admin第 2 轮又加了where上一步被拦改用limit取第一行第 3 轮又加了limit上一步被拦改用group by ... having第 4 轮连group by也拦上一步被拦用substr(...)逐字比对几轮下来你会发现WAF 的规则不是铁板一块而是一张能逐块敲掉的墙。它拦掉了这个关键词你就绕开它换个等价的写法它连空格都过滤了你还能用%0b这类字符替代。这种挤牙膏式的探测虽然费时间却是效率最高、最不容易翻车的路子。这里还藏着一个特别容易被忽略的坑同一份参数不同服务器解析出来的结果不一样。项目里那张表格把各环境的差异列得明明白白比如 ASP.NET/IIS 遇到同名参数会按逗号拼接PHP/Zeus 只认最后一个而 JSP/Tomcat 只认第一个。WAF 按自己那套解析去拦截后端按另一套去执行——两边一不一致就是传说中的 HTTP 参数污染HPP绕过空间。同一串字符在门卫眼里和在后端眼里根本不是一回事这个认知差就是突破口。第三步绕开它靠的是这些变装技巧摸清了规则下一步就是给 payload 换装。项目里的绕过技巧部分像一个工具箱随手能拎出好几样大小写混排script写成ScRipT有些偷懒的正则一搜就放行了。URL 编码把整段 payload 或其中一部分转成%编码绕开对明文特征的匹配。Unicode 变形把prompt()写成\u0070r\u06f\u006dpt()同样的意思不同的长相。手工编码太累仓库的others/obfu.py就是干这个的一条命令把 payload 编码成各种格式还能顺手 URL 编码输出python3 obfu.py -s paramsvg/onloadprompt()// -e ibm037 -ueo跑完你会得到一串类似%97%81%99%81%94~L%A2%A5%87a...的字符比手工敲省事多了。类似的招数还有利用浏览器解析怪癖、滥用 SSL/TLS 加密、塞白名单字符串骗过放行逻辑……每一样在仓库里都有出处和例子照着试就行。需要提醒的是绕过不是为了教人干坏事而是检验防护的真实强度——这正是攻防测试存在的意义。打开仓库你还会挖到这些宝贝如果你觉得上面这些已经够用那还远远低估了这个项目。它真正的价值是把零散在社区各处的知识做成了索引WAF 指纹大全从 360、阿里云盾到 Cloudflare、ModSecurity几十上百家 WAF 的识别特征集中在一张表里做指纹识别时是现成的对照手册。已知绕过案例针对 Cloudflare、Barracuda、F5 等具体产品的绕过记录踩坑经验直接复用。现成工具清单指纹识别、规则测试、payload 混淆、性能压测按用途分好了类省去全网找工具的功夫。论文与演讲papers/和presentations/目录下躺着 Qualys、SANS、OWASP 等机构的经典资料从协议层绕过到检测逻辑分析都有想深入研究的可以从这里起步。说白了这是一个把别人踩过的坑整理成册的项目。你不需要从零开始试错照着目录走就行。动手之前三条必须记住的底线技术归技术红线不能丢。开始之前请先把这三条刻在脑子里只测自己有权测的系统。未经授权的扫描和绕过性质完全不一样别拿前程开玩笑。先在隔离环境里练手。搭个本地靶场或者测试站把 WAF 和 Web 服务都配好随便折腾不心疼。识别优先绕过最后。顺序永远是从认出对手到摸清规则再到尝试绕过跳步最容易翻车。现在就差你动手了光看攻略不会变强亲手跑一遍才算入门。给你一份 30 分钟的起步清单把仓库克隆到本地git clone https://gitcode.com/gh_mirrors/aw/Awesome-WAF翻一遍others/obfu.py对着示例把第一段 payload 编码成功。找个你有权限的测试站按文章里说的四个观察窗口试着说出对面站的是谁。等你能在 5 分钟内完成一次指纹识别再回头读papers/里的论文很多之前看不懂的术语就突然通了。WAF 攻防测试这条路入门不难难的是坚持把每一步做扎实。从今晚的第一步开始吧。【免费下载链接】Awesome-WAFEverything about Web Application Firewalls (WAFs) from Security Standpoint! 项目地址: https://gitcode.com/gh_mirrors/aw/Awesome-WAF创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考