☰
WAF 绕过原理与业务侧规避方案
2026/9/30 1:05:12 网站建设 项目流程

WAF 绕过原理与业务侧规避方案

前言

很多企业安全团队存在一个误区:部署 WAF 就等于 Web 安全落地,只要开启防护规则,SQL 注入、XSS 就能全部拦截。但在渗透测试实战中,大量漏洞可以通过各类变形、编码、协议差异等手段绕过 WAF 检测。

WAF 本质是流量检测的 “守门员”,只能识别已知特征的攻击载荷。一旦攻击者对 Payload 进行混淆变形,利用 WAF 和后端中间件解析差异,就可能实现绕过。WAF 属于外层防御、虚拟补丁,不能替代业务代码层面的安全修复。

本文从 WAF 基础原理、常见绕过手段、底层根源,再到业务开发、架构、WAF 配置、测试审计给出完整规避方案,帮助开发、运维、安全人员理解绕过逻辑,从根源降低被绕过的风险。

免责声明:本文仅用于授权环境安全学习、红蓝对抗研究。严禁在未授权的网站上实施 WAF 绕过测试,未经授权的攻击行为违反《网络安全法》,需要承担法律责任。

一、WAF 基础工作原理

WAF(Web 应用防火墙)部署在用户与 Web 业务之间,对 HTTP/HTTPS 请求进行解析,匹配内置特征规则,识别 SQL 注入、XSS、命令执行、文件上传等攻击流量,执行告警、拦截、验证码操作。

WAF 检测流程:

  1. 接收 HTTP 请求,解析 URL、Header、请求 Body;
  2. 对内容进行解码(URL 解码、HTML 解码等);
  3. 正则 / 语义模型匹配攻击特征;
  4. 命中规则则拦截,未命中则转发请求到后端 Web 服务器;
  5. 记录日志。

WAF 绕过的核心本质:WAF 解析后的请求是无害内容,后端 Web / 数据库解析后变成恶意攻击 Payload。
简单说:WAF 看到的是 “正常字符串”,后端执行的是攻击代码,利用 WAF 和后端中间件、数据库解析逻辑不一致的缺陷实现逃逸。

二、主流 WAF 绕过手段与原理拆解

2.1 关键字混淆变形(最基础、最常用)

WAF 正则匹配连续关键字,攻击者拆分、改变大小写、替换空白符,破坏连续关键词,后端语法依然正常执行。

  1. 大小写混淆:SQL、JS 语法不区分大小写
sElEcT * frOm user where 1=1
<ScRiPt>alert(1)</ScRiPt>
  1. 注释拆分关键字,插入/**/打断连续字符
un/**/ion se/**/lect 1,2

MySQL 特有内联注释/*!50000 union*/select,WAF 识别为注释,MySQL 会执行注释内部代码。
3.空白字符替换:不用空格,使用 Tab (%09)、换行 (%0A)、垂直制表符等替代空格

1'%09or%091=1--

2.2 各类编码绕过

利用多层编码,WAF 只做一次解码,后端会多次解码,最终还原恶意 Payload。

  1. URL 双重编码
    单引号'一次编码%27,二次编码%2527。WAF 仅解码一次得到%27,不触发规则;后端二次解码还原为',注入生效。
  2. Unicode、全角字符编码
    全角单引号%ef%bc%87,部分 WAF 不做字符归一化,数据库可自动兼容解析。
  3. HTML 实体编码、Hex、Base64 编码
    XSS 场景大量使用,浏览器自动解码执行 JS。

2.3 HTTP 协议层面绕过(高级绕过)

利用 HTTP 协议解析差异,WAF 和后端服务器对报文解析结果不一致。

  1. 分块传输 Chunked
    增加请求头Transfer-Encoding: chunked,将恶意 Payload 拆成多段。部分 WAF 不会重组全部分块内容再检测,后端 Nginx/Apache 会重组完整请求执行攻击。
  2. HPP HTTP 参数污染
    同一个参数提交多次:id=1&id=union select 1,2
    WAF 读取第一个参数id=1判定无害,后端语言(PHP)读取最后一个参数,拿到恶意 Payload。
  3. 多部分表单 multipart/form-data 边界混淆
    文件上传接口,篡改 boundary 分隔符,把恶意内容拆分到多个表单区块,WAF 逐块检测无法发现完整攻击特征,后端合并解析。

2.4 语法替换与拼接绕过

不用被拦截关键字,使用等价语法、字符串拼接函数,实现相同攻击效果。
SQL 示例:OR替换为||,AND替换为&&;
使用CONCAT()、CHAR()函数拼接字符串:

select concat(CHAR(115),CHAR(101),CHAR(108),CHAR(101),CHAR(99),CHAR(116)) from user;

CHAR 函数拼接出 select 字符串,WAF 无法匹配 select 关键字。

2.5 架构层面绕过(云 WAF 常见风险)

  1. 源站 IP 泄露:攻击者直接访问后端源 IP,流量不经过 WAF,WAF 防护完全失效;
  2. 子域名、测试站漏接入 WAF,同服务器横向攻击;
  3. 利用 CDN、多层代理,伪造 X-Forwarded-For 头绕过 IP 黑名单。

重点:所有 WAF 绕过的前提,是业务本身存在漏洞。如果代码层面不存在 SQL 注入、XSS 漏洞,Payload 再怎么变形,后端也无法执行攻击。WAF 绕过,只是利用变形手段触发业务原有漏洞,不是凭空创造漏洞。

三、业务侧规避 WAF 绕过风险(核心方案)

核心思路:业务侧加固是治本,WAF 只是兜底防护。不能依赖 WAF 拦截攻击,要让业务本身无法执行恶意载荷。

3.1 开发编码层:消除漏洞根源(优先级最高)

1. SQL 注入:强制使用参数化预编译查询

无论 WAF 规则是否完善,只要使用#{}预编译,用户输入永远作为数据,不会被解析 SQL 语法,再多变形 SQL payload 都无法触发注入。

  • 禁止直接拼接 SQL 字符串;MyBatis 严格管控${}使用,仅白名单表名、排序字段;
  • 数据库账号最小权限,业务账号不具备 drop、alter 等高权限。
2. XSS 防护:输出上下文编码,富文本使用 DOMPurify 净化
  • 用户可控数据输出 HTML 页面,按不同上下文做对应转义;
  • Vue/React 禁止随意使用v-html、dangerouslySetInnerHTML渲染用户输入;
  • 开启 CSP 内容安全策略,即使存在 XSS 漏洞,恶意脚本无法执行,作为兜底;
  • Cookie 增加 HttpOnly、Secure 属性,降低 Cookie 劫持危害。
3. 输入校验:白名单优先,拒绝黑名单过滤

所有用户输入(URL 参数、JSON、表单、Header),使用白名单校验:限定输入长度、允许字符集合、数据格式。

黑名单极易被编码、变形绕过,不能作为安全主防护。例如手机号只允许数字,用户名仅允许字母数字下划线。

4. 统一后端解码与归一化处理

后端接收参数时,统一做一次完整解码、字符标准化(Unicode 归一化),在业务逻辑处理前,还原所有编码字符。
好处:无论攻击者使用几层 URL/Unicode 编码,后端拿到原始明文,业务白名单校验直接拦截恶意字符,从源头规避编码类 WAF 绕过。

5. 文件上传接口加固
  • 文件校验读取文件真实文件头,不是仅依靠后缀名;
  • 上传目录禁止脚本执行权限;上传文件重命名,放到 Web 目录外;
  • 限制文件大小、MIME 类型白名单。

3.2 WAF 配置层面优化,减少可绕过空间

  1. 开启全量解码与字符归一化
    开启 WAF 多层解码检测(URL、HTML、Unicode),对请求内容做标准化,统一大小写、解析各类空白字符,避免编码混淆绕过。
  2. 完善规则,启用语义检测,不只依赖简单正则
    单纯正则容易被注释、拆分绕过,开启语义分析、机器学习模型,识别变形后的攻击语义,而不是单纯匹配字符串。
  3. 防护分块传输、参数污染
    开启 Chunked 重组检测,HPP 参数污染检测,对同名多参数全部检测,不只检测第一个参数。
  4. 模式上线流程:先观察模式,再切换拦截
    新业务接入 WAF,先使用日志观测模式 7~14 天,收集误报,调优规则,再切换拦截,避免误拦截业务。
  5. 源站保护,禁止直接访问源 IP
    云 WAF 必须开启源站保护,限制仅 WAF 回源 IP 可以访问后端服务器,防止攻击者绕过 WAF 直连源站。
  6. 防护范围全覆盖:主站、子域名、测试环境、API 接口全部接入 WAF,不要遗漏。

3.3 架构与运维层面加固

  1. 资产梳理,清理遗留测试接口、旧版本站点,这类站点往往没有 WAF 防护,漏洞多;
  2. 限制 HTTP 请求头、Body 最大长度,防止超长注释、垃圾填充字符消耗 WAF 正则引擎(ReDoS);
  3. 源站服务器禁止直接暴露公网,所有流量强制经过 WAF/CDN;
  4. 统一时间同步,完整留存 WAF 全量日志(原始请求包、Header、body),日志保存≥6 个月;
  5. 监控绕过行为:高频 403、大量编码异常请求、Payload 变形尝试,触发 IP 限流与告警。

3.4 安全测试:上线前主动做 WAF 绕过专项测试

常规漏洞扫描容易漏掉 WAF 绕过场景,上线前增加专项测试:

  1. 使用各类编码、注释、大小写变形 Payload 测试漏洞点;
  2. 测试分块传输、参数污染、multipart 表单绕过场景;
  3. 测试绕过成功后的危害,验证业务加固是否生效;
  4. 漏洞修复完成后,复测各类变形 Payload,确认无法触发漏洞。

重点:测试目标不是 “测试 WAF 能不能被绕过”,而是验证业务本身在各类变形输入下,不存在漏洞。

四、WAF 绕过风险自查清单(可直接用于安全评审)

表格

检查分类检查项说明
代码安全SQL 全部使用参数化查询,无字符串拼接 SQL根治注入类绕过
代码安全用户输入采用白名单校验,不依赖黑名单过滤防御关键字变形绕过
代码安全输出页面做上下文编码,开启 CSP抵御 XSS 变形 Payload
后端处理后端参数统一归一化、全量解码防御多重编码绕过
WAF 配置业务所有域名、测试站全部接入 WAF,开启源站保护防止直连源站绕过
WAF 配置WAF 开启多层解码、字符归一化、chunk 重组减少协议解析差异
接口安全文件上传校验文件头,上传目录禁止执行脚本文件上传绕过防护
日志监控WAF 完整记录原始请求,异常编码请求告警发现绕过尝试行为
安全测试上线前完成 WAF 绕过专项测试验证加固有效性

五、常见误区澄清

❌误区 1:WAF 开启最高防护等级,就能挡住所有攻击

WAF 只能识别已知特征,新型变形 Payload 依然可以绕过。业务存在漏洞时,WAF 只是临时补丁,漏洞修复才是根本。

❌误区 2:WAF 拦截普通 Payload = 业务没有漏洞

普通 Payload 被拦截,不代表变形 Payload 无法绕过,很多漏洞在标准 WAF 规则下可以被变形绕过。

❌误区 3:只在前端过滤特殊字符

前端校验完全可以抓包修改,后端校验不可缺少,前端过滤不能用来防御 WAF 绕过。

❌误区 4:绕过 WAF=WAF 产品不行

绝大多数绕过成功的核心原因:业务本身存在漏洞,WAF 规则未覆盖变形载荷。再好的 WAF,也不能替代代码安全。

六、总结

WAF 绕过的底层根源是WAF 和后端对 HTTP 请求、字符编码、语法解析的不一致,而实现绕过的前提是业务 Web 接口本身存在安全漏洞。

防护逻辑顺序:代码加固(消除漏洞) > 后端输入归一化校验 > WAF 兜底防护 > 安全测试 + 日志审计。
WAF 定位是纵深防御里的外层屏障,用来拦截自动化扫描器、基础攻击,不能作为唯一防护手段。

业务安全团队在做 Web 防护时,不要把全部安全寄托在 WAF 上,优先修复代码漏洞,配合后端归一化输入校验,缩小攻击面,从业务底层杜绝 WAF 绕过带来的入侵风险。

一句话记住:WAF 是拦攻击流量的盾牌,代码安全才是业务的承重墙;没有漏洞,再多变形 Payload 也无法实现 WAF 绕过。


最后

网络安全需要学习那些知识

网络安全零基础入门学习路线&规划

初级
1、网络安全理论知识(2天)
①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)

2、渗透测试基础(一周)
①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等

3、操作系统基础(一周)
①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)

4、计算机网络基础(一周)
①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现

5、数据库基础操作(2天)
①数据库基础
②SQL语言基础
③数据库安全加固

6、Web渗透(1周)
①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)

恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;如果等保模块学的好,还可以从事等保工程师。薪资区间6k-15k

到此为止,大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗?

想要入坑黑客&网络安全的朋友,给大家准备了一份:282G全网最全的网络安全资料包免费领取!

7、脚本编程(初级/中级/高级)
在网络安全领域。是否具备编程能力是“脚本小子”和真正黑客的本质区别。在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中,想要高效地使用自制的脚本工具来实现各种目的,更是需要拥有编程能力.

零基础入门,建议选择脚本语言Python/PHP/Go/Java中的一种,对常用库进行编程学习; 搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP, IDE强烈推荐Sublime; ·Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,不要看完; ·用Python编写漏洞的exp,然后写一个简单的网络爬虫; ·PHP基本语法学习并书写一个简单的博客系统; 熟悉MVC架构,并试着学习一个PHP框架或者Python框架 (可选); ·了解Bootstrap的布局或者CSS。

8、超级黑客
这部分内容对零基础的同学来说还比较遥远,就不展开细说了,贴一个大概的路线。

网络安全工程师企业级学习路线

视频配套资料&国内外网安书籍、文档&工具
当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。

一些我自己买的、其他平台白嫖不到的视频教程:

要学习网安其实不难,难的是坚持和相信自己,我的经验是既然已经选定网安你就要相信它,相信它能成为你日后进阶的高效渠道,这样自己才会更有信念去学习,才能在碰到困难的时候坚持下去。

机会属于有准备的人,这是一个实力的时代。人和人之间的差距不在于智商,而在于如何利用业余时间,只要你想学习,什么时候开始都不晚,不要担心这担心那,你只需努力,剩下的交给时间!

这份完整版的学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询