WAF(Web应用防火墙)作为保护Web应用安全的重要防线,能有效抵御各类常见攻击。然而,攻击者也在不断探索WAF绕过技术,以突破防护。下面将深入研究常见的WAF绕过技术,并探讨如何加固WAF规则来提升防护能力。
常见WAF绕过技术
1. 编码绕过:攻击者利用各种编码方式对攻击Payload进行编码,使WAF难以识别原始攻击意图。例如,使用URL编码、Base64编码等。如常见的SQL注入Payload“' OR 1=1 --”,经过URL编码后变为“%27%20OR%201%3D1%20--”。WAF若仅对未编码的Payload进行检测,就可能放过经过编码的攻击请求。
2. 大小写绕过:部分WAF规则区分大小写,攻击者通过改变Payload中关键字的大小写来绕过检测。例如,将SQL注入中的“SELECT”写成“sElEcT”。若WAF规则只对全大写的“SELECT”进行匹配,就无法拦截这种大小写混合的攻击请求。
3. HTTP协议特性绕过:利用HTTP协议的一些特性,如添加额外的HTTP头、使用分块传输编码等。攻击者可以在请求中添加一些看似无害的HTTP头,干扰WAF的正常检测。例如,在请求头中添加“X-Forwarded-For”等字段,可能会使WAF对请求来源的判断产生混淆。
4. 注释绕过:在攻击Payload中添加注释符号,使WAF规则匹配失败。以SQL注入为例,在恶意代码中添加“/*comment*/”注释,如“' OR 1=1 /*comment*/ --”,WAF可能会因为注释的存在而无法准确识别攻击意图。
5. 畸形请求绕过:构造不符合标准HTTP规范的畸形请求,让WAF在解析请求时出现异常,从而绕过检测。例如,在请求行中使用不规范的字符或格式,或者在请求体中添加非法字符。
加固WAF规则的方法
1. 多编码支持:WAF应具备对多种编码方式的解析能力,在接收到请求后,先对请求中的参数进行解码处理,再进行规则匹配。例如,对于URL编码,WAF可以自动将编码后的参数解码为原始字符串,然后再检查是否包含攻击Payload。以下是一个简单的Python示例代码,用于对URL编码的字符串进行解码:
import urllib.parse encoded_str = '%27%20OR%201%3D1%20--' decoded_str = urllib.parse.unquote(encoded_str) print(decoded_str)
2. 大小写不敏感匹配:在规则配置中,采用大小写不敏感的匹配方式,确保无论关键字的大小写如何变化,都能被准确检测到。例如,在配置SQL注入检测规则时,将“SELECT”、“select”、“sElEcT”等不同大小写形式都纳入匹配范围。
3. 协议严格解析:WAF要严格按照HTTP协议规范对请求进行解析,对于不符合规范的畸形请求,直接判定为非法请求并拦截。同时,要对HTTP头进行严格检查,防止攻击者利用额外的HTTP头进行绕过。例如,对于“X-Forwarded-For”字段,要验证其格式和来源的合法性。
4. 注释过滤:在规则中添加对注释符号的过滤规则,将注释符号从请求中去除后再进行规则匹配。例如,对于SQL注入检测,先将请求中的“/*”和“*/”等注释符号去除,然后再检查是否存在恶意SQL代码。
5. 规则动态更新:WAF规则需要及时更新,以应对不断出现的新攻击技术和变种。可以通过订阅安全情报源、参与安全社区等方式,获取最新的攻击特征和防护建议,并及时更新WAF规则库。例如,当发现一种新的绕过技术时,迅速分析其特征,制定相应的规则并添加到WAF中。
6. 白名单和黑名单结合:除了使用黑名单规则来拦截已知的攻击Payload,还可以结合白名单规则,只允许合法的请求通过。例如,对于某些特定的Web应用接口,只允许特定格式和参数的请求访问,其他请求一律拦截。同时,定期对黑名单和白名单进行审核和更新,确保规则的有效性。
7. 机器学习和人工智能技术应用:利用机器学习和人工智能技术对大量的请求数据进行分析和学习,识别异常的请求模式和攻击行为。例如,通过训练一个基于深度学习的模型,对正常请求和攻击请求进行分类,提高WAF的检测准确率和效率。
案例分析
某电商网站部署了WAF来保护其Web应用安全。一段时间后,发现网站的数据库出现了异常操作,经过安全团队的排查,发现攻击者利用WAF绕过技术进行了SQL注入攻击。攻击者采用了编码绕过和注释绕过的方法,将恶意的SQL注入Payload进行URL编码,并添加了注释符号。由于该WAF的规则配置不够完善,只对未编码的Payload进行检测,且没有对注释符号进行过滤,导致攻击请求成功绕过WAF,进入了网站的Web应用。
针对这个问题,安全团队对WAF规则进行了加固。首先,添加了对URL编码的解析功能,确保能对编码后的Payload进行检测;其次,增加了对注释符号的过滤规则,去除请求中的注释后再进行规则匹配。经过这些改进后,WAF成功拦截了后续的类似攻击请求,网站的安全性得到了显著提升。
综上所述,WAF绕过技术不断发展,对Web应用的安全构成了严重威胁。为了有效保护Web应用,需要深入研究常见的绕过技术,并采取相应的措施加固WAF规则。通过多编码支持、大小写不敏感匹配、协议严格解析等方法,可以提高WAF的检测能力和防护水平,确保Web应用的安全稳定运行。
