吃透 WAF 绕过核心思路,这些实用技巧你必须掌握
浅谈WAF绕过技巧waf分类掌握绕过各类WAF可以说是渗透测试人员的一项基本技能本文将WAF分为云WAF、硬件WAF、软件WAF、代码级WAF分别从各自的特性来谈一些相关的绕过技巧更侧重于针对基于规则类的WAF绕过技巧。云wafEg:加速乐目前CDN服务的功能是越来越多安全性也越加强悍用户的每个请求都会被发送到指定的CDN节点上最后转发给真实站点。这个过程就好像加了一道关卡这个关卡提供了缓存、加速、防御的特点。绕过关键查询真实IP若是直接访问服务器的IP就不经过CDN了。以下四点有助于绕过1.查询历史DNS在2016年加入到了cnd节点里面可以通过查询2016年之前的dns记录2.查看子域名解析地址是否和主域名的IP地址相近。有些网站只会讲主站加入到CDN节点里面这时可以查看其二级、三级域名的IP地址信息进而猜到主站的IP地址3.CDN节点分发缺陷通过国外IP访问网站可能会出现真实IP因为有的CDN服务商可能只做了国内节点没做国外的这样访问请求是直接被转发到真实服务器地址上。4.让服务器主动连接你。比如rss订阅服务或则是向邮箱服务器发送个错误的邮件比如地址不存在 通过抓包观察返回的头来,查找IP地址信息。硬件wafEg:绿盟WAF软件wafEg:安全狗基于规则的WAF工作原理数据获取(注意 get post等方法以及 post体方式)———数据清洗(去除多余数据比如编码,mssql支持unicode编码)———规则匹配———二次校验一.绕注入1.关键字替换原理部分WAF是通过黑名单来起到拦截的作用这种情况可以用关键字替换来实现绕过。比如在mysql中waf将sleep()函数列入了黑名单可以通过具备相同功能的benchmark()函数来实现绕过。以下是部分相同功能的替代函数 等价于 BETWEEN 等价于 like Hex() bin() 等价于ascii() Sleep() 等价于 benchmark() Mid()substring() 等价于 substr( user 等价于 User() Version 等价于 version() (mysql支持 || ,oracle不支持 ||2.特殊符号原理结合不同数据库的特性来实现绕过。(最好是可以找到waf开发者都不了解的某些特性),以下是两个广为流传的小特性比如 “” selectpasswordfrommysql.user 相当于是一个空格的作用“”放在mysql的末尾会起到注释符的作用3.编码可以结合各种编码方式来绕过,比如url编码url双重编码,十六进制编码unicode编码数据库编码等。举个栗子mysql默认的字符集是latin,因此在php代码里面设置的字符集为 utf-8,这只是客户端的字符集因此存在字符集装换的问题utf-8—latin,若传进来的字符集不是完整的字符则会导致不完整的字符自动会忽略的问题比如usernameadmin%c2 , 由于%c2不是一个完整的utf-8字符 因此传到Mysql 里面 自动忽略了导致查出的是admin用户的数据可以利用这个特性绕过。4.注释符/xxx/是注释也可以充当空白符。因为 //可使得MySQL对sql语句(union//select)词法解析成功。事实上许多WAF都考虑到//可以作为空白分但是waf检测 “/*./”很消耗性能工程师会折中可能在检测中间引入一些特殊字符例如/w/。或者WAF可能只中间检查n个字符“/.{,n}/”。根据以上想法可以逐步测试绕过方法先测试最基本的union/**/select再测试中间引入特殊字union/aaaa%01bbs/select最后测试注释长度union/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/select5.空白符绕过基于正则表达式的WAF SQL注入规则使用正则表达式的“s”匹配空格例如”selectsunion”。利用空白符进行绕过测试WAF时尽可能减少其他原因的影响例如”union select”被拦截只需把中间空白符替换为”%250C”, “%25A0”进行绕过测试。union%250Cselect union%25A0select函数分隔符对基于正则表达式的WAF我们猜测安全工程师写WAF规则时可能不知道函数名与左括号之间可以存在特殊字符或者遗漏可以存在特殊字符。例如匹配函数”concat()”的规则写法“concat(”或者”concats*(”就没有考虑到一些特殊字符。concat%2520( concat/**/( concat%250c( concat%25a0(6.浮点数词法解析利用MySQL解析浮点数的特点正则表达式无法匹配出单词union但是MySQL词法解析成功解析出浮点数、sql关键字union。select * from users where id8E0union select 1,2,3,4,5,6,7,8,9,0 select * from users where id8.0union select 1,2,3,4,5,6,7,8,9,07.报错注入Error-based的SQL注入函数非常容易被忽略导致WAF规则过滤不完整。常见的函数extractvalue(1, concat(0x5c,md5(3))); updatexml(1, concat(0x5d,md5(3)),1); GeometryCollection((select*from(select*from(selectversion)f)x)) polygon((select*from(select name_const(version(),1))x)) linestring() multipoint() multilinestring() multipolygon()二.绕上传关键是waf与webserver的差异waf的局限性与webserver的灵活性。1.协议解析不一致-文件名解析兼容性multipart协议中文件名的形式为“filename”abc.php””。但是Tomcat、PHP等容器解析协议时会做一些兼容能正确解析 ”filename”abc.php”、”filenameabc.php”、 ”filename’abc.php’”。而WAF只按照协议标准去解析无法解析文件名但是后端容器能正确获得文件名从而导致被绕过。场景的绕过形式Content-Disposition: form-data; name”file”; filenamebc.php Content-Disposition: form-data; name”file”; filename”abc.php Content-Disposition: form-data; name”file”; filename’abc.php’2.协议解析不正确-未解析所有文件multipart协议中一个POST请求可以同时上传多个文件。如图许多WAF只检查第一个上传文件没有检查上传的所有文件而实际后端容器会解析所有上传的文件名攻击者只需把paylaod放在后面的文件PART即可绕过。3.协议解析不正确-文件名覆盖在multipart协议中一个文件上传块存在多个Content-Disposition将以最后一个Content-Disposition的filename值作为上传的文件名。许多WAF解析到第一个Content-Disposition就认为协议解析完毕获得上传的文件名从而导致被绕过。如图加速乐的WAF解析得到文件名是”sp.pho”但PHP解析结果是”sp.php”导致被绕过。4.变换位置因为WebServer获取参数的灵活性所以我尝试把安全狗拦截的filename”test.asp”换个位置。经过一番测试发现filename”test.asp”位于Content-Type: application/octet-stream下一行时安全狗的上传拦截便会失效。5.文件名覆盖在一个Content-Disposition 中存在多个filename 协议解析应该使用最后的filename值作为文件名。如果WAF解析到filename”p3.txt”认为解析到文件名结束解析将导致被绕过。因为后端容器解析到的文件名是t3.jsp。Content-Disposition: form-data;name”myfile”; filename”p3.txt”;filename”t3.jsp”》6.遗漏文件名当WAF遇到“name”myfile”;;”时认为没有解析到filename。而后端容器继续解析到的文件名是t3.jsp导致WAF被绕过。《Content-Disposition: form-data;name”myfile”;; filename”t3.jsp”》7.任意文件下载1相对路径所以WAF文件包含规则通常会检测连续的“…/”。根据vfs解析路径的语法解析到“//”文件路径不变解析到“/./”文件路径依然。 通过避免连续的”…/”从而绕过WAF文件包含规则。Eg: ././…///./…/.//…/etc//passwd它等价于…/…/…/etc/passwd。2绝对路径例如 /etc/./passwd 与 /etc/passwd 是等价的。还可以通过组合“/./”、“//”进行绕过Eg./etc///.//././/passwd /etc/passwd /etc././././passwd代码级waf所谓代码级的WAF是指程序员在程序内部借助自身编写的过滤函数来保护应用程序的安全。以下是三种脚本语言通常会使用的过滤位置php在php.ini中设置; Automatically add files before PHP document.; auto-prepend-fileauto_prepend_file ; Automatically add files after PHP document.; auto-append-fileauto_append_file 配置指令这些指令指向那些在每个请求的PHP脚本执行”之前”和”之后”才执行的PHP文件。这样就可以在各种HTTP请求集合(GET,POST,COOKIE)之前对数据进行一些前发处理。2.asp.net通过ASP.NET的System.Web.IHttpModule接口来实现3.java通过filter来实现。比如tomcat会在web.xml的配置文件中配置过滤类。绕过基于规则的WAF目前市面的大部分WAF是通过规则来实现的既然是规则就一定存在不全面、不准确的情况。下面举几个例子帮助大家拓展一下思路1.封禁IP比如有些waf会对重复的IP访问进行封锁,这时可以用在请求包体中加入 “X-Originating-IP:127.0.0.1”因为waf不会拦截他自己。2.前端waf针对于前端的waf,可以直接通过burp抓包绕过3.改变user-agent我们在写网站防火墙规则的时候可能都会做一件事:永远不屏蔽那些主流搜索引擎机器人的爬取(如,Google,Bing,Yahoo,Baidu等).这时我们就可以在USER-Agent伪造自己是搜索引擎的爬虫绕过waf.4.缓冲区溢出比如waf只允许长度是2M的包体而服务器则可以接受8M的包体这种情况 可以通过发送2M-8M的包体将WAF溢出死。5.替换关键字需要考虑waf具体怎么拦截的Seleselectct,倘若将中间的关键字删掉则可以绕过。6.webserver特性iis 自动忽略%我们知道asp有两个特性1.会将Request中的不能编码部分的%去掉 2.Request中如果有unicode部分会将其进行解码IIS6.0两个解析缺陷目录名包含.asp、.asa、.cer的话则该目录下的所有文件都将按照asp解析。Apache1.X 2.X解析漏洞Apache在以上版本中解析文件名的方式是从后向前识别扩展名直到遇见Apache可识别的扩展名为止。Nginx解析漏洞Nginx 0.5.*Nginx 0.6.*Nginx 0.7 0.7.65Nginx 0.8 0.8.37以上Nginx容器的版本下上传一个在waf白名单之内扩展名的文件shell.jpg然后以shell.jpg.php进行请求。Nginx 0.8.41 – 1.5.6以上Nginx容器的版本下上传一个在waf白名单之内扩展名的文件shell.jpg然后以shell.jpg%20.php进行请求。PHP CGI解析漏洞 : IIS 7.0/7.5 和 Nginx 0.8.3 以上的容器版本中默认php配置文件cgi.fix_pathinfo1时上传一个存在于白名单的扩展名文件shell.jpg在请求时以shell.jpg/shell.php请求会将shell.jpg以php来解析。参数污染比如waf只接受前一个参数这意味着通过注入: id7id[SQLi]WAF的网络层会解析 id7 ,合法PHP应用层会解析 id[SQLi] 注入语句成功执行7.数据库特性mysql1.隐形类型转换2.为了便利性 牺牲安全性。select * from admin where user“Admin” 可以执行 mysql为了 使用的便利性 会允许一些 ‘错误’比如 select * from admin where user“Àdmin” 依然可移执行。3.MySQL文件读取(5.5以上的版本 由于secure_file_priv这个变量为null 因此无法使用文件读取 文件写入的功能。)8.服务器特性Windows特殊字符当我们上传一个文件的filename为shell.php{%80-%99}时waf可能识别为.php{%80-%99}就会导致被绕过。NTFS ADS特性ADS是NTFS磁盘格式的一个特性用于NTFS交换数据流。在上传文件时如果waf对请求正文的filename匹配不当的话可能会导致绕过。Windows在创建文件时在文件名末尾不管加多少点都会自动去除那么上传时filename可以这么写shell.php……也可以这么写shell.php::$DATA…….。总结本文主要对基于规则的WAF的绕过技巧基于规则的waf有着天然的缺陷型构造出基于规则之外的特性就有可能绕过。或者干脆将WAF直接打挂这时waf很有可能直接启用Bypass模式。网络安全的知识多而杂怎么科学合理安排下面给大家总结了一套适用于网安零基础的学习路线应届生和转行人员都适用学完保底6k就算你底子差如果能趁着网安良好的发展势头不断学习日后跳槽大厂、拿到百万年薪也不是不可能初级黑客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、高级黑客这部分内容对零基础的同学来说还比较遥远就不展开细说了贴一个大概的路线。网络安全工程师企业级学习路线很多小伙伴想要一窥网络安全整个体系这里我分享一份打磨了4年已经成功修改到4.0版本的**《平均薪资40w的网络安全工程师学习路线图》**对于从来没有接触过网络安全的同学我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线大家跟着这个大的方向学习准没问题。如果你想要入坑黑客网络安全工程师这份282G全网最全的网络安全资料包网络安全大礼包《黑客网络安全入门进阶学习资源包》免费分享​​​​​​学习资料工具包压箱底的好资料全面地介绍网络安全的基础理论包括逆向、八层网络防御、汇编语言、白帽子web安全、密码学、网络安全协议等将基础理论和主流工具的应用实践紧密结合有利于读者理解各种主流工具背后的实现机制。​​​​​​网络安全源码合集工具包​​​​视频教程​​​​视频配套资料国内外网安书籍、文档工具​​​​​ 因篇幅有限仅展示部分资料需要点击下方链接即可前往获取黑客/网安大礼包CSDN大礼包《黑客网络安全入门进阶学习资源包》免费分享好了就写到这了,大家有任何问题也可以随时私信问我!希望大家不要忘记点赞收藏哦!特别声明此教程为纯技术分享本文的目的决不是为那些怀有不良动机的人提供及技术支持也不承担因为技术被滥用所产生的连带责任本书的目的在于最大限度地唤醒大家对网络安全的重视并采取相应的安全措施从而减少由网络安全而带来的经济损失。本文转自网络如有侵权请联系删除。

相关新闻

CA证书到底是怎么签发的?(CA签名、CA数字签名、CA数字证书、TLS Certificate、Certificate Authority、根证书、Root CA、中级 CA、网站签名、加密签名)

CA证书到底是怎么签发的?(CA签名、CA数字签名、CA数字证书、TLS Certificate、Certificate Authority、根证书、Root CA、中级 CA、网站签名、加密签名)

文章目录从零理解 HTTPS 证书:CA 证书到底是怎么创建的?一、HTTPS 的核心问题二、证书其实任何人都可以生成三、CA:证书颁发机构四、申请 HTTPS 证书需要提供什么?1 网站域名2 公钥3 组织信息(某些证书)五、…

2026/7/8 0:44:44 阅读更多 →
救命神器!实力封神的降AIGC软件 —— 千笔·降AI率助手

救命神器!实力封神的降AIGC软件 —— 千笔·降AI率助手

在AI技术日益渗透学术写作的当下,越来越多的学生和研究者开始借助AI工具提升论文效率。然而,随着知网、维普、万方等查重系统对AI生成内容的识别能力不断提升,以及Turnitin等国际平台对AIGC的严格审查,论文中的“AI痕迹”正成为影…

2026/7/6 20:45:09 阅读更多 →
Linux中Centos和Ubuntu的区别是什么?

Linux中Centos和Ubuntu的区别是什么?

Linux是一种免费使用和自由传播的类UNIX操作系统,拥有众多发行版本,其中最受欢迎的就是Centos和Ubuntu,各自具有独特的特点和优势,那么Linux中Centos和Ubuntu的区别是什么?具体请看下文。CentOS和Ubuntu都是流行的Linux发行版&am…

2026/7/7 14:20:15 阅读更多 →

最新新闻

如何为TouchDesigner配置MediaPipe虚拟摄像头:Spout与Syphon完整指南

如何为TouchDesigner配置MediaPipe虚拟摄像头:Spout与Syphon完整指南

如何为TouchDesigner配置MediaPipe虚拟摄像头:Spout与Syphon完整指南 【免费下载链接】mediapipe-touchdesigner GPU Accelerated MediaPipe Plugin for TouchDesigner 项目地址: https://gitcode.com/gh_mirrors/me/mediapipe-touchdesigner MediaPipe Touc…

2026/7/8 0:43:03 阅读更多 →
如何快速配置Minecraft启动器PCL2:终极免费的模组管理解决方案

如何快速配置Minecraft启动器PCL2:终极免费的模组管理解决方案

如何快速配置Minecraft启动器PCL2:终极免费的模组管理解决方案 【免费下载链接】PCL Minecraft 启动器 Plain Craft Launcher(PCL)。 项目地址: https://gitcode.com/gh_mirrors/pc/PCL Plain Craft Launcher 2(PCL2&#…

2026/7/8 0:43:03 阅读更多 →
Obsidian本地REST API终极指南:5步构建你的智能笔记自动化系统

Obsidian本地REST API终极指南:5步构建你的智能笔记自动化系统

Obsidian本地REST API终极指南:5步构建你的智能笔记自动化系统 【免费下载链接】obsidian-local-rest-api A secure REST API and Model Context Protocol (MCP) server for your vault. 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-local-rest-api …

2026/7/8 0:41:03 阅读更多 →
AI 电动滑板车智能功率 电池保护 高效驱动方案

AI 电动滑板车智能功率 电池保护 高效驱动方案

随着 AI 技术赋能电动滑板车(如智能扭矩控制、自适应续航、动力回收),电机控制器对功率 MOSFET 提出新要求:高效率、小体积、高可靠性与低成本。微碧半导体(VBsemi)基于先进 Trench 工艺,为您提…

2026/7/8 0:41:03 阅读更多 →
OpenCV 4.8.0 BGR 历史溯源:从硬件兼容到现代库的 3 种应对策略

OpenCV 4.8.0 BGR 历史溯源:从硬件兼容到现代库的 3 种应对策略

OpenCV 4.8.0 BGR 历史溯源:从硬件兼容到现代库的 3 种应对策略在计算机视觉领域,OpenCV 的 BGR 通道顺序一直是开发者绕不开的话题。当你第一次用 OpenCV 读取图像后尝试用 matplotlib 显示时,那诡异的蓝色调会让你瞬间意识到问题的存在——…

2026/7/8 0:39:03 阅读更多 →
7天从零到精通:SMAPI星露谷物语模组开发完全指南

7天从零到精通:SMAPI星露谷物语模组开发完全指南

7天从零到精通:SMAPI星露谷物语模组开发完全指南 【免费下载链接】SMAPI The modding API for Stardew Valley. 项目地址: https://gitcode.com/gh_mirrors/smap/SMAPI 你是否曾想过为星露谷物语添加全新的游戏内容?是否羡慕其他玩家拥有独特的农…

2026/7/8 0:34:55 阅读更多 →

日新闻

3大核心能力重塑《明日方舟》游戏体验:MAA自动化助手的革命性突破

3大核心能力重塑《明日方舟》游戏体验:MAA自动化助手的革命性突破

3大核心能力重塑《明日方舟》游戏体验:MAA自动化助手的革命性突破 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手,全日常一键长草!| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: …

2026/7/8 0:00:48 阅读更多 →
MyBatis 批量操作深度优化——从 N+1 到批处理的全路径

MyBatis 批量操作深度优化——从 N+1 到批处理的全路径

MyBatis 批量操作深度优化——从 N1 到批处理的全路径 一、从"功能正确"到"性能可接受"——MyBatis 批量操作的三段式进化 MyBatis 在日常增删改查场景中几乎是无感的——实体映射直观、SQL 控制灵活。但当数据量从千级上升到十万级、百万级,许…

2026/7/8 0:00:48 阅读更多 →
工业负载控制方案:TPD2015FN与PIC18F45K22应用解析

工业负载控制方案:TPD2015FN与PIC18F45K22应用解析

1. 工业负载控制方案概述在工业自动化、电机驱动和照明控制等高需求场景中,可靠地控制电感和电阻负载是核心挑战之一。TPD2015FN作为东芝的8通道高端智能功率开关IC,配合PIC18F45K22微控制器,能够构建一套稳定、高效的负载控制系统。这套组合…

2026/7/8 0:02:48 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/7 14:24:45 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/7 12:34:47 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/7 15:59:06 阅读更多 →

月新闻