Web应用防火墙
Web应用程序防火墙(WAF)是一种入侵检测和防御系统,可以是硬件或软件解决方案。 它专门用于检查HTTP,并使用下面介绍的令人震惊的检测逻辑来分析GET和POST请求。 Web应用程序防火墙软件通常可以作为Web服务器插件使用。
WAF变得非常流行,从小型企业到大型公司,各种公司都提供了不同价格类别的各种解决方案。 现代WAF之所以受欢迎是因为它具有广泛的涵盖任务,因此Web应用程序开发人员可以依靠它来解决各种安全问题,但前提是该解决方案不能保证绝对的保护。 基本的WAF工作流程如下所示。

它的主要功能是检测和阻止查询,根据WAF分析,其中存在一些异常,或者可以跟踪攻击媒介。 这种分析不应使合法用户与Web应用程序进行交互变得困难,但同时,它必须准确,及时地检测到任何尝试的攻击。 为了实现此功能,WAF开发人员通常使用正则表达式,令牌,行为分析,信誉分析和机器学习,并且通常将所有这些技术一起使用。

此外,WAF还可以提供其他功能:防御DDoS,阻止攻击者的IP地址,跟踪可疑IP地址,在cookie中添加仅HTTP标志或添加CSRF令牌的功能。 每个WAF都是单独的,并且具有独特的内部布置,但是有一些典型的分析方法。
正则表达式
现有的大多数WAF都基于基于正则表达式的规则。 为了创建它们,WAF开发人员研究了一些众所周知的攻击集,因此,确定了关键的句法结构,可以声称存在这些键来进行攻击。 根据获得的结果,编写可找到此类构造的正则表达式。 例如,通过分析HTTP标头(例如Server:Apache Tomcat / 7.0.x),WAF可以阻止响应,从而防止服务器信息泄漏或发出警报。
但是,这种方法有许多缺点。 正则表达式的适用范围仅限于一个查询,通常甚至是特定的查询参数,这显然会降低此类请求的有效性。 其次,正则表达式的语法,文本协议的复杂逻辑(允许替换等效结构以及使用符号的不同表示形式)在创建此类规则时会导致错误。 下表显示了最常见的旁路技术。

SQL混淆。 可以更改表达式,以便使用语言的语法可以消除空格。 例如,在SQL中,可以使用方括号和星号:
s / * / e / ** // * e * // * / l / * le * c * // * / ect ~~ / ** / 1或/ id = 1 + un / ** / ion + sel / ** / ect + 1,2,3--
另一个基于使用不同的编码的方式,使得WAF不在某些位置解码数据。 例如,在规范化过程中将一个字符替换为其url代码后,WAF将无法理解有必要对数据进行解码并跳过请求,而同一参数将被Web接受并成功解码应用程序。

搜索非典型的等效句法构造。 该方法用于查找WAF开发人员无法考虑的操作方式,或者用于机器学习的研究样本中没有该载体。 这些构造之一是非字母数字Javascript代码表示形式,如下所示。

计分方法
这种方法不会检测攻击,但会补充其他方法,使它们更加精确和灵活。 引入该工具的原因是,查询中某些可疑设计的存在不足以检测攻击,或者相反,它可能导致大量假阳性错误。 通过引入计分系统可以解决此问题。 例如,每个基于正则表达式的规则都将补充有关其操作的重要性的信息。 确定所有工作规则后,总结其重要性。 如果超过某个阈值,则会检测到攻击并阻止该请求。
行为分析
检测利用查询参数漏洞的尝试不是WAF的唯一任务。 识别漏洞搜索过程本身很重要,它可以通过自动工具经常使用的扫描尝试,目录暴力破解,参数模糊测试以及其他漏洞检测方法来表现出来,并对它们做出相应的反应。 更高级的WAF甚至知道如何使用查询链构建XML文件,这些查询链对于正常用户行为是典型的,并阻止尝试以与标准行为不同的顺序发送请求。 这种机制不仅可以抵消攻击,而且会使发现漏洞的过程变得复杂。
Tokeniser解析器分析器
这种检测攻击的方法是一个复杂的概念。 但是,要在Libinjection库的C ++引物上进行反汇编并不容易,因为它可以快速而准确地检测SQL注入攻击。 当前,对于Libinjection库,存在用于各种编程语言的端口,包括Java,C和Python。 该机制简化为对签名的搜索,该签名表示为令牌序列。 一些签名被添加到内置黑名单中,被认为是不可接受的或恶意的。 换句话说,在分析任何查询之前,它首先会导致一组标记。 令牌分为不同的类型,字符串,字符,常规运算符,数字,注释,变量等。
该方法的主要缺点之一是可能构建这样的设计,这将导致令牌的错误形成; 因此,请求的签名将不同于预期的签名。
针对令牌分配器的攻击与尝试通过使用令牌破坏器将请求拆分为令牌来破坏逻辑。 这些符号使您可以影响字符串元素的选择以匹配特定标记,从而通过签名绕过搜索。 在开放式访问中,有一些备忘单,这些备忘单是通过Mysql fuzzing和Libinjection中的后续查询检查获得的。
信誉分析
信誉机制直接从防火墙和防病毒继承。 如今,几乎所有WAF都包含VPN服务,匿名程序,Tor网络节点和僵尸网络参与者的地址列表,可用于阻止来自可疑地址的请求。 更高级的WAF能够根据分析的流量自动更新其数据库并进行其他输入。
总结
通常,Web应用程序防火墙是一种现代且良好的防护工具,它永远不会对Web应用程序是多余的。 找到绕过WAF的方法的主要思想是将请求的查询带到一种形式,使得受攻击的Web应用程序仍然可以理解该查询,但是对于WAF来说,它是无法理解的或看起来不是无害的。
但是,WAF无法检测到几类漏洞。 这可以是任何逻辑漏洞,在这种情况下,请求中没有异常行为。 此外,为优化WAF规则而进行的一些研究还显示了从检查过程中排除合法请求的方法,这可能具有潜在的危险。 WAF也很可能对识别竞争对手(例如比赛条件和不安全的用户身份验证)毫无用处。
参考资料
Vladimir Ivanov(2016)SQL表达式的不同输入中允许的符号表,解析模糊表的结果。 可在以下网址获得: www.blackhat.com/docs/us-16/materials/us-16-Ivanov-Web-Application-Firewalls-Analysis-Of-Detection-Logic.pdf
Torrano-Gimenez,C.,Perez-Villegas,A.和Alvarez,G.(2009)“一种基于自学习异常的Web应用程序防火墙”,Springer,柏林,海德堡。 doi: doi.org/10.1007/978-3-642-04091-7_11 。
Ramsingh,C.和Centonze,P.(2017年,《数据库注入的程序分析》,《国际计算机技术杂志》,16(6),pp。 6977–6986。Doi:10.24297 / ijct.v16i6.6332。
Prokhorenko,V.,Choo,KKR和Ashman,H.(2016),``Web应用程序保护技术:分类法'',《网络与计算机应用杂志》,60,页。 95-112。 doi:10.1016 / j.jnca.2015.11.11.017。
Prandl,S.,Lazarescu,M.和Pham,D.(2015年)。 Web应用程序防火墙解决方案研究。 信息系统安全,第501-510页。 doi:10.1007 / 978-3-319-26961-0_29。
积极技术(2016a)“ Web应用防火墙:攻击检测逻辑机制”。 可在以下网址获得: www.blackhat.com/docs/us-16/materials/us-16-Ivanov- Web-Application-Firewalls-Analysis-Of-Detection-Logic.pdf。
OWASP(2017)SQL注入绕过WAF。 可在以下网址获得: www.owasp.org/index.php/SQL_Injection_Bypassing_WAF 。