标题 | 简介 | 类型 | 公开时间 | ||||||||||
|
|||||||||||||
|
|||||||||||||
详情 | |||||||||||||
[SAFE-ID: JIWO-2025-3480] 作者: ecawen 发表于: [2024-12-30]
本文共 [0] 位读者顶过
Web应用防火墙(WAF)作为现代网络安全的重要组成部分,通过监控和分析HTTP/HTTPS流量,识别和过滤恶意请求,以保护Web应用程序免受各种攻击。然而,攻击者为了绕过WAF的防护,会采用各种Payload混淆技术。列出常用的40种绕过WAF防火墙的Payload混淆技术,供参考学习。 [出自:jiwo.org] 1. HTML编码混淆HTML编码是一种将特殊字符转换为其HTML实体表示的方法,如将<转换为<,>转换为>,"转换为"等。通过将Payload中的特殊字符转换为HTML实体,可以绕过WAF对这些字符的检测。例如,一个XSS攻击Payload <script>alert(1)</script> 可以被编码为 <script>alert(1)</script>。 2. URL编码混淆URL编码(也称百分号编码)是将数据转换为可以在URL中安全传输的格式。特殊字符会被转换为ASCII值的十六进制表示,并在前面加上百分号(%)。例如,空格被编码为%20,<被编码为%3C,>被编码为%3E。攻击者可以通过URL编码来混淆Payload,使其在WAF中难以被识别。 3. 双重URL编码混淆双重URL编码是对已经进行了一次URL编码的字符串,再进行一次URL编码。例如,字符<经过第一次URL编码后变为%3C,再进行第二次URL编码后变为%253C。这种技术使得Payload更加难以被WAF识别和解析。 4. Unicode编码混淆Unicode编码使用特定的字符编码来表示字符,如%u0027代表单引号。通过Unicode编码,攻击者可以将Payload中的特殊字符转换为WAF难以识别的形式。 5. Base64编码混淆Base64编码通常用于处理二进制数据,将其转换为64个可打印字符的组合。攻击者可以对Payload进行Base64编码,然后在目标服务器上解码执行。这种技术可以有效绕过WAF对二进制数据的检测。 6. XOR加密混淆XOR加密是一种简单的加密技术,通过明文和密钥的异或运算生成密文。攻击者可以使用XOR加密对Payload进行加密,然后在目标服务器上解密执行。这种技术增加了WAF识别和检测Payload的难度。 7. 字母大小写转换混淆某些WAF可能只过滤全大写或全小写的敏感字符。攻击者可以通过混合使用大小写字母(如将select改为SelEct)来绕过WAF的检测。 8. 空格过滤绕过WAF通常会过滤空格字符。攻击者可以使用空白符(如%09、%0a、%0b、%0c、%0d、%a0等)或加号(+)作为空格的替代,以绕过WAF的空格过滤规则。 9. 双关键字绕过针对WAF可能只过滤一次关键字的情况,攻击者可以将关键字拆分为两部分(如将SELECT拆分为SEL和ECT),以绕过WAF的过滤机制。 10. 内联注释绕过在SQL注入攻击中,攻击者可以使用内联注释(如MySQL的/*!*/)来绕过WAF对特定SQL语句的检测。内联注释可以使WAF在解析SQL语句时忽略注释部分的内容。 11. 请求方式差异绕过某些WAF可能对不同请求方式(如GET、POST、PUT等)的处理规则不一致。攻击者可以利用这一点,通过非常规的HTTP方法(如TRACE、OPTIONS等)来绕过WAF的检测。 12. 超大数据包绕过WAF通常有数据包大小的限制,以防止大型攻击载荷。攻击者可以通过发送超大的数据包,使WAF在处理时耗尽资源或发生错误,从而绕过WAF的检测和保护机制。 13. 随机化请求绕过攻击者可以改变请求头、Cookie、User-Agent等信息,并在每次请求时进行随机选择。这种随机化策略可以增加WAF的检测复杂度,使攻击者更具隐蔽性。 14. 分段传输绕过分段传输是将攻击载荷分成多个小块进行传输,以混淆和绕过WAF的检测。通过分段传输,攻击者可以将Payload分散在多个请求中,使其难以被WAF识别和拦截。 15. IP伪造绕过攻击者可以通过伪装源IP地址来绕过WAF的防御机制。通过设置任意的源IP地址,攻击者可以使WAF无法正确追踪和过滤恶意请求。 16. 利用WAF自身的缺陷不同版本的WAF之间可能存在解析差异,攻击者可以利用这些差异来绕过WAF的检测。此外,WAF规则库中可能存在漏洞或不足,攻击者可以设计针对性的攻击载荷来绕过WAF的防护。 17. 查找真实IP绕过攻击者可以通过域名指向云WAF地址后反向实现代理,查找相关的二级域名及同一域名注册者的其他域名解析记录,或使用快速扫描工具对全网IP进行扫描,以找到网站的真实IP,从而绕过WAF的防护。 18. 字符替换或添加注释混淆攻击者可以在原始攻击载荷中插入无害字符或注释符号来扰乱WAF的解析规则。例如,在SQL注入Payload中添加无害的注释符号(如--),或在XSS Payload中插入无害的字符(如空格、换行符等),以绕过WAF的检测。 19. 修改请求头绕过通过修改请求头中的信息,攻击者可以绕过一些基于请求头的WAF规则。例如,修改User-Agent字段或添加自定义请求头,使WAF认为请求是合法的。 20. 参数污染绕过参数污染是指在URL参数中添加恶意的非法字符或多次提交相同的参数,使WAF无法正确解析请求,从而绕过防护。例如,在URL中添加多个相同的参数,或在参数值中插入非法字符,以扰乱WAF的解析过程。 21. 嵌套请求混淆攻击者可以在一个请求中嵌套另一个请求,通过多层编码或混淆来隐藏真实的攻击载荷。例如,可以在一个JSON请求中嵌入另一个经过编码或混淆的JSON请求,当WAF解析外层请求时,内层的攻击载荷可能不会被立即检测到。 22. 使用特殊字符集不同的字符集可能包含WAF未识别的特殊字符。攻击者可以尝试使用不同的字符集(如UTF-7、ISO-8859-1等)来编码Payload,以增加WAF解析的难度。 23. 混淆函数名或变量名在SQL注入或远程代码执行攻击中,攻击者可以尝试使用不同的函数名或变量名来绕过WAF的关键词过滤。例如,将CONCAT替换为@@CONCAT@@或其他自定义函数名。 24. 编码转换攻击攻击者可以将Payload转换为不同的编码格式,并在请求中混合使用多种编码。例如,将一部分Payload使用Base64编码,另一部分使用URL编码,以增加WAF解析的复杂性。 25. 利用参数截断在某些情况下,WAF可能无法正确处理被截断的参数。攻击者可以尝试发送被截断的参数,使得WAF无法正确解析整个Payload,从而绕过检测。 26. 混淆请求参数顺序WAF可能依赖于请求参数的特定顺序来识别攻击载荷。攻击者可以尝试改变请求参数的顺序,使WAF无法正确匹配预定义的规则集。 27. 利用WAF的延迟处理某些WAF在处理大量请求时可能存在延迟。攻击者可以尝试在短时间内发送大量请求,使WAF处理不过来,从而可能忽略某些攻击载荷的检测。 28. 混淆内容类型攻击者可以尝试改变请求的内容类型(如将application/x-www-form-urlencoded改为multipart/form-data),以绕过WAF对特定内容类型的检测规则。 29. 利用Cookie注入在某些情况下,WAF可能不会检查Cookie中的值。攻击者可以尝试将攻击载荷隐藏在Cookie中,以绕过WAF的检测。 30. 利用HTTP头注入类似于Cookie注入,攻击者也可以尝试将攻击载荷隐藏在HTTP头中(如Referer、User-Agent等),这些头信息有时可能不会被WAF仔细检查。 31. 编码嵌套与重复攻击者可以将Payload进行多层编码,并在编码过程中重复嵌套编码步骤,使得WAF在解码过程中难以一次性还原出原始Payload,从而增加检测难度。 32. 自定义协议混淆某些应用可能使用自定义协议进行通信。攻击者可以设计自定义协议的Payload,这些Payload在格式和内容上可能与WAF预定义的规则集不匹配,从而绕过WAF的检测。 33. 利用JSONP注入JSONP(JSON with Padding)是一种跨域通信技术。攻击者可以尝试通过JSONP注入的方式,将攻击载荷包装在JSONP回调函数中,从而绕过WAF对跨域请求的检测。 34. 混淆请求方法除了常见的GET和POST请求外,HTTP还定义了其他请求方法(如PUT、DELETE、PATCH等)。攻击者可以尝试使用不常见的请求方法,因为这些方法可能不在WAF的默认检测范围内。 35. 利用请求体分块传输编码(chunked transfer encoding)在HTTP/1.1中,支持分块传输编码,允许将响应体分成多个块进行传输。攻击者可以尝试利用分块传输编码,将攻击载荷分散在多个块中,以绕过WAF的检测。 36. 混淆路径参数在RESTful API中,路径参数通常用于指定资源。攻击者可以尝试在路径参数中插入混淆后的攻击载荷,因为这些参数可能不会被WAF仔细检查。 37. 利用HTTP/2特性HTTP/2引入了多路复用、头部压缩等新特性。攻击者可以尝试利用这些特性来构造混淆的Payload,使得WAF难以准确解析和检测。 38. 混淆查询参数查询参数通常用于传递附加信息给服务器。攻击者可以尝试在查询参数中插入混淆的攻击载荷,或者通过修改查询参数的格式和结构来绕过WAF的检测。 39. 利用WebSocket通信WebSocket是一种在单个TCP连接上进行全双工通信的协议。攻击者可以尝试通过WebSocket发送混淆的攻击载荷,因为这些载荷可能不在WAF的默认检测范围内。 40. 混淆Content-Type攻击者可以尝试修改请求的Content-Type头部,将其设置为WAF不常见或不支持的类型,从而绕过对特定类型Payload的检测。 |