IIS 上的 OWASP ModSecurity 2.9 导致 403 禁止访问

OWASP ModSecurity 2.9 on IIS Causing 403 Forbidden

提问人:Ross Kelly 提问时间:10/20/2023 更新时间:10/21/2023 访问量:69

问:

我有一个托管在 IIS 上的 ASP.NET Core 3.2 Web 应用。我的网站使用 Plesk 托管在共享环境中。当我查看 Web 应用程序防火墙页面时,它显示核心规则集为“在 IIS 上运行的 OWASP(免费)(ModSecurity 2.9)”。

我的一些客户在访问该网站时收到了很多 403 Forbidden 错误。对于iOS用户来说,这似乎比Android或桌面用户更常见。用户经常不得不删除iPhone的Safari网络数据,包括cookie,而403很快又回来了。

在查看了 ModSecurity 审计日志文件后,我可以看到很多条目,其中大多数似乎是误报。例如,触发的规则 #942440 通常会拒绝访问,该规则认为这是 SQL 注入攻击。此规则检测在 REQUEST_COOKIES 中找到的 SQL 注释字符序列。我不知道为什么cookie包含这些字符。我正在使用 AspNetCore 身份验证和标识。

我在网上对 ModSecurity 和核心规则集进行了一些研究,似乎 CRS 3 减少了超过 90% 的误报。我的主机的 Plesk 控制台显示 2.9 版,这尤其令人沮丧,因为当尝试从主机提供商那里获得支持时,我得到的一行答案不是特别有用。例如,我询问是否要更新到 CRS 3,得到的回答是“我相信 WAF 的更新全部由 Plesk 管理。

我也不知道偏执级别设置了什么,因为它没有在 Plesk Web 应用程序防火墙页面上显示这一点。我唯一的模式选项是关闭、打开或仅检测/记录。

在查看了审计日志文件的内容后,我发现另一条规则 (#942450) “SQL Hex Encoding Identified ”似乎也引起了悲伤。此规则查找模式为“0x”的字符串,其中包含两个额外的十六进制数字。这是一种十六进制编码,可以指向正在使用的漏洞,但这种编码的问题在于会话 cookie 有时可能包含此模式。

忽略名称与特定模式匹配的 cookie 不是 ModSecurity 允许您做的事情,因此我认为唯一可行的方法是让此规则忽略所有 cookie。至少这样,对于 post 和查询字符串参数,规则仍然保持不变,但它不会再在 cookie 上触发。我也不知道如何做到这一点,因为我不知道如何在两个参数(ModSecurity 集合)上限制排除,而保持规则的其余部分不变。在 Plesk 页面上,它只允许我通过指定其 ID 来停用安全规则。

谁能建议我在这种情况下能做什么?我觉得我应该考虑将我的托管服务提供商更改为提供更好服务/支持并让我更好地控制 WAF 的托管服务提供商。我的网站不是那么大(小于 1GB)。在某些时候,我还需要考虑将其从 Core 3.2 更新到 .NET 6 或 7。我的位置是澳大利亚。

asp.net-core IIS 会话 cookie owasp mod-security

评论

0赞 Lex Li 10/20/2023
这绝对是现在更换服务提供商的迹象。否则,您将来将获得相同类型的支持服务。
0赞 samwu 10/23/2023
您可以使用失败请求跟踪来查看有关 403 错误的详细信息。

答:

0赞 airween 10/21/2023 #1

值班计划。

不幸的是,最大的问题是:

我唯一的模式选项是关闭、打开或仅检测/记录。

但是,让我们看看上述规则。

例如,触发的规则 #942440 通常会拒绝访问,该规则认为这是 SQL 注入攻击。此规则检测在 REQUEST_COOKIES 中找到的 SQL 注释字符序列。我不知道为什么cookie包含这些字符。

规则 942440 在 PL2 上激活,这意味着您的 WAF 至少在 PL2 上。但此规则也检查了(例如。“PHPSESSID”)、(例如。“user”)和(例如。 变量的值)。REQUEST_COOKIES_NAMESARGS_NAMESARGSuser

规则 942450 也检查相同的目标。如果没有详细信息(例如,事务的 audit.log 的全部内容),就很难找出问题所在。

但考虑到您可以定位问题。正如您所写的,当客户端使用 iOS 并且客户端触发上述一个或多个规则时,通常会发生此问题。

您只能通过排除来解决问题。但是,如果您的可能性只是打开/关闭/检测,那么您将无法添加任何排除项 - 正如您在此处所写的:

在 Plesk 页面上,它只允许我通过指定其 ID 来停用安全规则。

是的,这是一个大麻烦。

谁能建议我在这种情况下能做什么?

如果我是你在这种情况下,我会寻找另一个提供程序,或者如果它太复杂,请关闭这些规则并检查你的应用程序两次,它不允许看起来像这些规则过滤器的输入。