我想知道是否还有其他人遇到过Azure Front Door和Azure Web应用程序防火墙的问题,并且有解决方案。
WAF正在阻止对我们的ASP.NET Web应用程序的简单GET请求。正在触发的规则是 DefaultRuleSet-1.0-SQLI-942440检测到SQL注释序列。
根据此截断示例,只能在.AspNet.ApplicationCookie中找到sql注释序列: RZI5CL3Uk8cJjmX3B8S-q0ou--OO--bctU5sx8FhazvyvfAH7wH 。如果删除Cookie值中的两个破折号'-',则请求成功通过了防火墙。一旦将它们重新添加回去,该请求就会被相同的防火墙规则阻止。
看来我有2个选择。禁用不需要的规则(或将其从“阻止”更改为“日志”),或更改.AspNet.ApplicationCookie值,以确保它不包含任何会触发防火墙规则的文本。 Cookie由Microsoft.Owin.Security.Cookies库生成,我不确定是否可以更改其生成方式。
答案 0 :(得分:3)
我也遇到了同样的问题。
如果您查看cookie值:RZI5CL3Uk8cJjmX3B8S-q0ou--OO--bctU5sx8FhazvyvfAH7wH
,有两个-这是潜在危险的SQL命令,可以注释掉您要查询的SQL命令。注释掉查询后,攻击者可能会运行其命令而不是您的命令。
但是,显然,此cookie不会在SQL端运行任何查询,我们对此表示肯定。因此,我们可以创建不会运行特定条件的规则排除项。
转到您的WAF>单击左侧刀片上的托管规则>单击顶部的管理排除项>,然后单击添加
对于您而言,添加此规则就可以了:
匹配变量:请求Cookie名称 运算符:开始于 选择器:.AspNet.ApplicationCookie
但是,我使用Asp.Net Core 3.1和Asp.Net Core Identity。我也遇到了其他问题,例如__RequestVerificationToken。
这是我的排除清单。希望对您有所帮助。
PS,我认为目前存在故障。如果由于这些排除而对环境(例如UAT)有IP限制,则Web应用程序防火墙将绕过IP限制,即使您的WAF上仍具有自定义IP限制规则,您的UAT站点也会向公众开放。
答案 1 :(得分:0)
似乎cookie损坏了,因为我在比较健康cookie之前与以前存在的字段时,我的猜测可能是在字段内容中的某处,它被解释为截断sql语句并可能触发了规则。仍然需要确定这是否正确和/或是什么原因造成的。