Web应用防火墙(WAF),这玩意儿现在是网络安全标配,就像给网站穿了层盔甲。它能监控HTTP/HTTPS流量,揪出恶意请求,保护你的Web应用不被各种奇奇怪怪的攻击搞垮。但道高一尺魔高一丈,黑客们为了搞事情,也在不断进化,各种Payload混淆技术层出不穷,目的只有一个:绕过你的WAF!下面就扒一扒常见的40种绕过WAF的Payload混淆术,全是干货,拿走不谢!
1. HTML实体编码:别把<
当<
看!
HTML编码就是把那些特殊字符,像<
、>
、"
之类的,换成HTML实体。比如<
变成<
,>
变成>
,"
变成"
。WAF一看,这玩意儿不是HTML实体吗?放行!殊不知,解码后就是个XSS攻击Payload:<script>alert(1)</script>
。所以说,WAF防的只是表面功夫,关键还得看解码后的内容。
2. URL编码:把“明文”藏起来!
URL编码,或者叫百分号编码,就是把数据转换成能在URL里安全传输的格式。特殊字符会被转成ASCII值的十六进制,前面加个百分号(%)。空格变%20
,<
变%3C
,>
变%3E
。攻击者用这招,把Payload藏在URL里,WAF想抓都难。
3. 双重URL编码:障眼法升级版!
在URL编码的基础上再来一次!<
第一次编码成%3C
,第二次就变成%253C
。WAF傻眼了:这啥玩意儿?根本看不懂!攻击者就这么轻松绕过了。
4. Unicode编码:躲在“外星文”里!
Unicode编码用特定的字符编码来表示字符,比如%u0027
代表单引号。攻击者把Payload里的特殊字符转成Unicode,WAF就算想识别也得费老劲了。
5. Base64编码:二进制数据的“伪装术”!
Base64编码常用来处理二进制数据,把它变成64个可打印字符的组合。攻击者可以把Payload Base64一下,然后在服务器上解码执行。WAF想检测二进制数据?没那么容易!
6. XOR加密:简单粗暴但有效!
XOR加密就是把明文和密钥进行异或运算,生成密文。攻击者用XOR加密Payload,然后在服务器上解密。WAF想看懂?先解密再说!
7. 大小写混淆:WAF也有“眼花”的时候!
有些WAF可能只过滤全大写或全小写的敏感字符。攻击者就故意把大小写混着用,比如把select
改成SelEct
,WAF就可能漏过去了。
8. 空格替换:WAF:“我不要面子的啊?”
WAF通常会过滤空格。攻击者就用空白符(%09
、%0a
、%0b
、%0c
、%0d
、%a0
)或者加号(+)来代替空格。WAF:...算你狠!
9. 双关键字绕过:拆东墙补西墙!
WAF可能只会过滤一次关键字。攻击者就把关键字拆成两部分,比如把SELECT
拆成SEL
和ECT
。WAF:防不胜防啊!
10. 内联注释:在SQL语句里“打掩护”!
SQL注入攻击里,攻击者可以用内联注释(比如MySQL的/*!*/
)来绕过WAF对特定SQL语句的检测。WAF解析SQL语句的时候,会忽略注释部分的内容。
11. 请求方式:出其不意,攻其不备!
WAF对不同请求方式(GET、POST、PUT等)的处理规则可能不一样。攻击者就钻这个空子,用非常规的HTTP方法(TRACE、OPTIONS等)来绕过WAF。
12. 超大数据包:撑死WAF!
WAF对数据包大小有限制,防止大型攻击载荷。攻击者就发超大的数据包,让WAF处理不过来,或者直接崩溃,从而绕过检测。
13. 随机化请求:让WAF摸不着头脑!
攻击者每次请求都改变请求头、Cookie、User-Agent等信息,随机选择。WAF想抓?先适应我的节奏再说!
14. 分段传输:化整为零,各个击破!
把攻击载荷分成多个小块传输,混淆WAF的检测。Payload分散在多个请求里,WAF想识别?难上加难!
15. IP伪造:李代桃僵!
伪装源IP地址,让WAF无法正确追踪和过滤恶意请求。WAF:你是谁?从哪来?要到哪去?
16. 挖掘WAF自身漏洞:灯下黑!
不同版本的WAF之间可能存在解析差异,或者规则库有漏洞。攻击者专门针对这些漏洞设计Payload,轻松绕过WAF。
17. 查找真实IP:釜底抽薪!
通过各种手段找到网站的真实IP,绕过WAF的防护。WAF:我只是个代理,背锅侠!
18. 字符替换/注释:扰乱视线!
在Payload里插入无害字符或注释符号,扰乱WAF的解析规则。WAF:这代码真乱!
19. 修改请求头:伪装身份!
修改User-Agent字段或添加自定义请求头,让WAF认为请求是合法的。WAF:原来是自己人啊,放行!
20. 参数污染:浑水摸鱼!
在URL参数里添加恶意的非法字符或多次提交相同的参数,让WAF无法正确解析请求。
21. 嵌套请求:俄罗斯套娃!
在一个请求里嵌套另一个请求,多层编码或混淆,隐藏真实的攻击载荷。
22. 特殊字符集:WAF也有不认识的字!
不同的字符集可能包含WAF未识别的特殊字符。攻击者就用这些字符集来编码Payload。
23. 混淆函数/变量名:改头换面!
在SQL注入或远程代码执行攻击中,使用不同的函数名或变量名来绕过WAF的关键词过滤。
24. 编码转换:花式加密!
把Payload转换成不同的编码格式,混合使用多种编码,增加WAF解析的复杂性。
25. 参数截断:断章取义!
WAF可能无法正确处理被截断的参数。攻击者就发送被截断的参数,让WAF无法正确解析整个Payload。
26. 混淆参数顺序:打乱WAF的节奏!
改变请求参数的顺序,让WAF无法正确匹配预定义的规则集。
27. 利用WAF延迟:趁你病,要你命!
在短时间内发送大量请求,让WAF处理不过来,从而忽略某些攻击载荷的检测。
28. 混淆内容类型:瞒天过海!
改变请求的内容类型(如将application/x-www-form-urlencoded
改为multipart/form-data
),绕过WAF对特定内容类型的检测规则。
29. Cookie注入:暗度陈仓!
把攻击载荷隐藏在Cookie中,绕过WAF的检测。
30. HTTP头注入:瞒天过海!
把攻击载荷隐藏在HTTP头中(Referer、User-Agent等),这些头信息有时可能不会被WAF仔细检查。
31. 编码嵌套与重复:无限套娃!
对Payload进行多层编码,并在编码过程中重复嵌套编码步骤,使得WAF在解码过程中难以一次性还原出原始Payload。
32. 自定义协议:WAF:臣妾做不到啊!
设计自定义协议的Payload,这些Payload在格式和内容上可能与WAF预定义的规则集不匹配。
33. JSONP注入:跨域攻击!
通过JSONP注入的方式,将攻击载荷包装在JSONP回调函数中,绕过WAF对跨域请求的检测。
34. 混淆请求方法:剑走偏锋!
使用不常见的请求方法,因为这些方法可能不在WAF的默认检测范围内。
35. 分块传输编码:化整为零!
利用分块传输编码,将攻击载荷分散在多个块中,绕过WAF的检测。
36. 混淆路径参数:偷梁换柱!
在路径参数中插入混淆后的攻击载荷,因为这些参数可能不会被WAF仔细检查。
37. 利用HTTP/2特性:玩转新协议!
利用HTTP/2的多路复用、头部压缩等新特性来构造混淆的Payload,使得WAF难以准确解析和检测。
38. 混淆查询参数:指鹿为马!
在查询参数中插入混淆的攻击载荷,或者通过修改查询参数的格式和结构来绕过WAF的检测。
39. WebSocket通信:另辟蹊径!
通过WebSocket发送混淆的攻击载荷,因为这些载荷可能不在WAF的默认检测范围内。
40. 混淆Content-Type:偷梁换柱!
修改请求的Content-Type头部,将其设置为WAF不常见或不支持的类型,从而绕过对特定类型Payload的检测。
总而言之,WAF和黑客的攻防战永无止境。WAF要不断升级规则库,提升检测能力,才能更好地保护Web应用的安全。而作为开发者和安全人员,也要时刻关注最新的攻击技术,才能更好地应对各种安全威胁。
-
黑客/
原文始发于微信公众号(龙哥网络安全):WAF攻防:40种花式绕过术,看黑客如何与防火墙斗智斗勇!
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论