尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

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

WAF 绕过原理与业务侧规避方案 WAF 绕过原理与业务侧规避方案前言很多企业安全团队存在一个误区部署 WAF 就等于 Web 安全落地只要开启防护规则SQL 注入、XSS 就能全部拦截。但在渗透测试实战中大量漏洞可以通过各类变形、编码、协议差异等手段绕过 WAF 检测。WAF 本质是流量检测的 “守门员”只能识别已知特征的攻击载荷。一旦攻击者对 Payload 进行混淆变形利用 WAF 和后端中间件解析差异就可能实现绕过。WAF 属于外层防御、虚拟补丁不能替代业务代码层面的安全修复。本文从 WAF 基础原理、常见绕过手段、底层根源再到业务开发、架构、WAF 配置、测试审计给出完整规避方案帮助开发、运维、安全人员理解绕过逻辑从根源降低被绕过的风险。免责声明本文仅用于授权环境安全学习、红蓝对抗研究。严禁在未授权的网站上实施 WAF 绕过测试未经授权的攻击行为违反《网络安全法》需要承担法律责任。一、WAF 基础工作原理WAFWeb 应用防火墙部署在用户与 Web 业务之间对 HTTP/HTTPS 请求进行解析匹配内置特征规则识别 SQL 注入、XSS、命令执行、文件上传等攻击流量执行告警、拦截、验证码操作。WAF 检测流程接收 HTTP 请求解析 URL、Header、请求 Body对内容进行解码URL 解码、HTML 解码等正则 / 语义模型匹配攻击特征命中规则则拦截未命中则转发请求到后端 Web 服务器记录日志。WAF 绕过的核心本质WAF 解析后的请求是无害内容后端 Web / 数据库解析后变成恶意攻击 Payload。简单说WAF 看到的是 “正常字符串”后端执行的是攻击代码利用 WAF 和后端中间件、数据库解析逻辑不一致的缺陷实现逃逸。二、主流 WAF 绕过手段与原理拆解2.1 关键字混淆变形最基础、最常用WAF 正则匹配连续关键字攻击者拆分、改变大小写、替换空白符破坏连续关键词后端语法依然正常执行。大小写混淆SQL、JS 语法不区分大小写sElEcT * frOm user where 11ScRiPtalert(1)/ScRiPt注释拆分关键字插入/**/打断连续字符un/**/ion se/**/lect 1,2MySQL 特有内联注释/*!50000 union*/selectWAF 识别为注释MySQL 会执行注释内部代码。3.空白字符替换不用空格使用 Tab (%09)、换行 (%0A)、垂直制表符等替代空格1%09or%0911--2.2 各类编码绕过利用多层编码WAF 只做一次解码后端会多次解码最终还原恶意 Payload。URL 双重编码单引号一次编码%27二次编码%2527。WAF 仅解码一次得到%27不触发规则后端二次解码还原为注入生效。Unicode、全角字符编码全角单引号efbc87部分 WAF 不做字符归一化数据库可自动兼容解析。HTML 实体编码、Hex、Base64 编码XSS 场景大量使用浏览器自动解码执行 JS。2.3 HTTP 协议层面绕过高级绕过利用 HTTP 协议解析差异WAF 和后端服务器对报文解析结果不一致。分块传输 Chunked增加请求头Transfer-Encoding: chunked将恶意 Payload 拆成多段。部分 WAF 不会重组全部分块内容再检测后端 Nginx/Apache 会重组完整请求执行攻击。HPP HTTP 参数污染同一个参数提交多次id1idunion select 1,2WAF 读取第一个参数id1判定无害后端语言PHP读取最后一个参数拿到恶意 Payload。多部分表单 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 常见风险源站 IP 泄露攻击者直接访问后端源 IP流量不经过 WAFWAF 防护完全失效子域名、测试站漏接入 WAF同服务器横向攻击利用 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 配置层面优化减少可绕过空间开启全量解码与字符归一化开启 WAF 多层解码检测URL、HTML、Unicode对请求内容做标准化统一大小写、解析各类空白字符避免编码混淆绕过。完善规则启用语义检测不只依赖简单正则单纯正则容易被注释、拆分绕过开启语义分析、机器学习模型识别变形后的攻击语义而不是单纯匹配字符串。防护分块传输、参数污染开启 Chunked 重组检测HPP 参数污染检测对同名多参数全部检测不只检测第一个参数。模式上线流程先观察模式再切换拦截新业务接入 WAF先使用日志观测模式 7~14 天收集误报调优规则再切换拦截避免误拦截业务。源站保护禁止直接访问源 IP云 WAF 必须开启源站保护限制仅 WAF 回源 IP 可以访问后端服务器防止攻击者绕过 WAF 直连源站。防护范围全覆盖主站、子域名、测试环境、API 接口全部接入 WAF不要遗漏。3.3 架构与运维层面加固资产梳理清理遗留测试接口、旧版本站点这类站点往往没有 WAF 防护漏洞多限制 HTTP 请求头、Body 最大长度防止超长注释、垃圾填充字符消耗 WAF 正则引擎ReDoS源站服务器禁止直接暴露公网所有流量强制经过 WAF/CDN统一时间同步完整留存 WAF 全量日志原始请求包、Header、body日志保存≥6 个月监控绕过行为高频 403、大量编码异常请求、Payload 变形尝试触发 IP 限流与告警。3.4 安全测试上线前主动做 WAF 绕过专项测试常规漏洞扫描容易漏掉 WAF 绕过场景上线前增加专项测试使用各类编码、注释、大小写变形 Payload 测试漏洞点测试分块传输、参数污染、multipart 表单绕过场景测试绕过成功后的危害验证业务加固是否生效漏洞修复完成后复测各类变形 Payload确认无法触发漏洞。重点测试目标不是 “测试 WAF 能不能被绕过”而是验证业务本身在各类变形输入下不存在漏洞。四、WAF 绕过风险自查清单可直接用于安全评审表格检查分类检查项说明代码安全SQL 全部使用参数化查询无字符串拼接 SQL根治注入类绕过代码安全用户输入采用白名单校验不依赖黑名单过滤防御关键字变形绕过代码安全输出页面做上下文编码开启 CSP抵御 XSS 变形 Payload后端处理后端参数统一归一化、全量解码防御多重编码绕过WAF 配置业务所有域名、测试站全部接入 WAF开启源站保护防止直连源站绕过WAF 配置WAF 开启多层解码、字符归一化、chunk 重组减少协议解析差异接口安全文件上传校验文件头上传目录禁止执行脚本文件上传绕过防护日志监控WAF 完整记录原始请求异常编码请求告警发现绕过尝试行为安全测试上线前完成 WAF 绕过专项测试验证加固有效性五、常见误区澄清❌误区 1WAF 开启最高防护等级就能挡住所有攻击WAF 只能识别已知特征新型变形 Payload 依然可以绕过。业务存在漏洞时WAF 只是临时补丁漏洞修复才是根本。❌误区 2WAF 拦截普通 Payload 业务没有漏洞普通 Payload 被拦截不代表变形 Payload 无法绕过很多漏洞在标准 WAF 规则下可以被变形绕过。❌误区 3只在前端过滤特殊字符前端校验完全可以抓包修改后端校验不可缺少前端过滤不能用来防御 WAF 绕过。❌误区 4绕过 WAFWAF 产品不行绝大多数绕过成功的核心原因业务本身存在漏洞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%免费】
返回列表