5

我想知道是否有其他人遇到过 Azure Front Door 和 Azure Web 应用程序防火墙的问题并有解决方案。

WAF 正在阻止对我们的 ASP.NET Web 应用程序的简单 GET 请求。被触发的规则是DefaultRuleSet-1.0-SQLI-942440 SQL Comment Sequence Detected

根据这个截断的示例,我可以找到 sql 注释序列的唯一位置是 .AspNet.ApplicationCookie:RZI5CL3Uk8cJjmX3B8S-q0ou--OO--bctU5sx8FhazvyvfAH7wH。如果我删除 cookie 值中的 2 个破折号“--”,则请求成功通过防火墙。一旦我将它们添加回来,请求就会被相同的防火墙规则阻止。

看来我有两个选择。禁用我不想执行的规则(或将其从 Block 更改为 Log),或更改 .AspNet.ApplicationCookie 值以确保它不包含任何会触发防火墙规则的文本。cookie 由 Microsoft.Owin.Security.Cookies 库生成,我不确定是否可以更改它的生成方式。

4

3 回答 3

9

我也遇到了同样的问题。

如果您查看 cookie 值:RZI5CL3Uk8cJjmX3B8S-q0ou--OO--bctU5sx8FhazvyvfAH7wH有两个 -- 这是潜在危险的 SQL 命令,可以注释掉您要查询的 SQL 命令。攻击者可能会在注释掉您的查询后运行他们的命令而不是您的命令。

但是,很明显,这个 cookie 不会在 SQL 端运行任何查询,我们对此很确定。因此,我们可以创建不会运行特定条件的规则排除。

转到您的 WAF > 单击左侧刀片上的托管规则 > 单击顶部的管理排除项 > 然后单击添加

在您的情况下,添加此规则就可以了:

匹配变量:请求 cookie 名称运算符:以选择器开头:.AspNet.ApplicationCookie

但是,我使用 Asp.Net Core 3.1 和 Asp.Net Core Identity。我也遇到了其他问题,例如 __RequestVerificationToken。

在此处输入图像描述

这是我的完整排除列表。我希望它有所帮助。

在此处输入图像描述

PS我认为目前有一个小故障。如果您的环境有 IP 限制,例如 UAT,由于这些排除,Web 应用程序防火墙会绕过 IP 限制,即使您的 WAF 上仍有自定义 IP 限制规则,您的 UAT 站点也会对公众开放。

于 2020-05-29T19:53:39.957 回答
2

我在这里遇到了类似的事情并在博客上写了这篇文章:前门不完整的第一个请求

为了测试这一点,我创建了一个 Web 应用程序并将其放在 Front Door 服务后面。在那个测试应用程序中,我迭代了 的所有属性HttpContext.HttpRequest并将它们打印出来。就我现在所见,直接请求和通过 Front Door 的请求之间有两个属性不同。Front Door 请求的 theAcceptTypes和property 都是空的,而直接访问测试应用程序时它们是绝对填写的。UserLanguages

我不太确定第一个 Front Door 请求与直接请求不同的原因是什么。它是一个错误吗?是故意的吗?如果是,为什么?还是因为 Front Door 是使用不支持这些属性的框架开发的,所以在转发时它们为空?

不幸的是,我没有找到解决该问题的方法,但如果其他人遇到此问题,请回答这个问题:我确实遇到了类似的事情。

于 2020-01-06T20:47:07.717 回答
0

似乎 cookie 已损坏,因为我将之前存在的字段与健康的 cookie 进行比较,我的猜测可能是字段内容中的某处被解释为截断 sql 语句并可能触发规则。仍然要确定这是否属实和/或是什么原因造成的。

于 2019-11-23T00:05:25.063 回答