Home Blogs 轻松进行WAF调优
Applications

About The Author

Outline

小型和新企业正面临着严峻的安全挑战。 他们需要一个复杂的安全解决方案来确保Web应用程序的安全,同时最大限度地降低雇用专业安全专家或第三方托管服务的成本。 随着新的攻击向量不断涌现,Web应用程序安全变得越来越重要,并且比以往任何时候都更具挑战性。

Edgecast,现在的Edgio,WAF就是解决方案。 它提供了一个强大而复杂的解决方案,可简化管理。 实时仪表板和日志交付提供最新可见性,以便管理员可以快速识别威胁并采取措施。

在本博客中,我们将重点介绍企业如何识别和消除误报并为其Web应用程序构建自定义解决方案,而不会产生任何额外的支持成本。

如果您是该领域的新用户,但尚未使用Edgio WAF,请观看此简短教程,了解用户界面及其工作原理。

如果你已经有一个帐户,请随时与我做这项练习。

1我们先前往实时仪表板,按时间筛选WAF事件。 这是要分析Web流量的时间段。 (注意:如果您之前已经执行了一些规则调整,请确保在最近一次调整后选择一个时间范围)。

图1:过去6小时内发生的WAF事件。

2查看此流量触发的前10个规则ID。 规则ID是进一步过滤流量和观察各种WAF事件的有效负载的好方法。 也就是说,请按这些规则ID逐个过滤流量,以便进一步分析。

图2:WAF事件触发的前10条规则。

3接下来,查看匹配值字段,查看触发此规则的有效负载值。

图3:匹配值列下的有效负载值。

4分析有效负载值以确定它们是否具有恶意。 不知道他们是什么样子的? 以下是您可能在有效负载中找到的一些潜在恶意值。

  • 路径遍历: http://some_site.com.br/../../../../some dir/some file¹ http://testsite.com/get.asp?f=/etc/passwd²‍
  • LFI漏洞: 攻击者试图访问服务器上的敏感文件,如.ini。 Edgecast WAF默认阻止此文件系统扩展和许多其他关键文件系统扩展。³‍
  • 跨站点脚本: http://testsite.test/<脚本>alert(“test”);</script>⁴ <img src=” http://url.to.file.which/not.exist”onerror=alert(document.cookie);>⁵‍
  • SQL注入: 从’a’=’a’的项目中选择*;⁶选择1;⁷‍
  • 远程代码执行: eval(“\$user =‘$regdate’);⁸‍
  • 基于时间的攻击: 选择1和睡眠(2);⁹选择基准(2000000,MD5 (‘a’));¹⁰

5如果您仍然不确定有效负载是否是恶意的,一个很好的方法来找出它是通过查看启动请求的客户端IP列表与相应的有效负载。 如果客户端IP是分布式的(也就是说,不同的),则负载很可能是误报。 但是,如果所有客户端IP具有相同的值,则表明存在潜在的容量攻击,因此将其归类为恶意负载。 为了演示这一点,让我们参考步骤3并选择此匹配值–{“IATA”:[“TGZ”,”MEX”}}并将其用作示例。 要查找发送此有效负载的客户端IP的列表,请添加匹配值作为筛选器,如下所示:

图5:发送有效负载值的客户端IP:{“IATA”:[“TGZ”,”MEX”]}。

在这种情况下,由于发出此请求的IP地址多种多样,这些请求很可能来自真实用户,因此很可能会出现误报。

6一旦识别出误报,您可以在”托管规则”部分为其创建异常,但在执行此操作之前,您需要了解此有效负载的位置;查询字符串,请求标头,URL或其他位置。 通过查看步骤5中同一页上的匹配项列,可以轻松完成此操作。 在本使用案例中,有效负载是在”data”查询参数中找到的,如下所示:

图6:有效载荷值的位置:{“IATA”:[“TGZ”,”MEX”]}。

7一个很好的经验法则是过滤这些特定的匹配字段,这些字段包含误报有效负载,然后验证没有任何其他具有此匹配的参数的请求承载实际的恶意有效负载。 换言之,”特定匹配位置”字段中的有效负载绝不是恶意的。 这是通过在相关字段的匹配字段上添加过滤器来实现的。 查看我们的用例,我们可以确认在此查询参数中未找到任何恶意负载:

图7:在查询参数data中发送的所有有效负载值。

8创建异常前的最后一步是查找由匹配的”打开”字段触发的规则ID。 我们正在尝试记录此误报触发的所有规则(规则ID)。 根据我们的使用案例,此信息可在步骤5的同一页面上找到。

图8:由有效负载值触发的规则列表:{“IATA”:[“TGZ”,”MEX”]}。

9是时候创建异常了。 转至托管规则部分,然后单击要向其添加这些例外的托管规则。

图9:为WAF配置创建的现有托管规则。

10转至”例外”选项卡,然后单击”添加新条件”。 选择字段上匹配的类型,如args,request_cookie或找到有效负载的URL。 然后输入参数的名称,例如query或cookie。 最后,输入有效负载触发的所有规则ID的列表。

图10:”Managed Rule (托管规则)”配置下的”Exceptions (例外)”选项卡。

11继续创造这种条件。 在保存托管规则后的30秒内,您将能够看到此误报通过WAF

12,现在您已经知道这是如何工作的,请返回到步骤3,通过另一个规则ID过滤流量,并重复此过程,以尽可能多地消除误报。

你做到了。 您刚刚针对流量自定义了WAF解决方案。

最后几个提示

如果您是第一次使用Edgio WAF,我们建议您先执行本练习的2轮-3,然后再打开阻止模式。 根据您的流量,您可以每2个-7天重复此练习。 对于现有Edgio WAF客户,我们建议每3周进行一次-4微调练习。 您还应该考虑将托管规则的阈值降低到10以下,逐步将其设置为最佳值5。 这可确保您稳步策划更精确,更清晰的规则集。 请记住,Edgio WAF为您的实时流量提供了双重WAF,一个实际的暂存环境(审计模式)。 您可以对规则集的所有定期更新和微调使用审核模式,而无需担心丢弃合法流量。

请立即与我们联系,了解我们所有可确保您的Web应用程序安全的安全技术的更多信息。

资源:

¹⁻² OWASP,”Path Traversal,” owasp.org, owasp.org/www-community/attacks/Path_Traversal

³ Offensive Security,”文件包含漏洞“,offensive-security.com, offensive-security.com/metasploit-unleashed/file-inclusion-vulnerabilities/

⁴⁻⁵ OWASP,”跨站点脚本“,owasp.org, owasp.org/www-community/attacks/xss/

⁶⁻⁷OWASP,” SQL注入”,owasp.org, owasp.org/www-community/attacks/SQL_Injection

⁸ Netsparker,”远程代码评估(执行)漏洞“,netsparker.com, netsparker.com/blog/web-security/remote-code-evaluation-execution/

⁹⁻¹⁰ Ashraff, Ahmad,”Timing-based attacks in web applications,” owasp.org, owasp.org/www-pdf-archive/2018年02月05日-AhmadAshraff.pdf