我已经在Azure WebApp上运行的ASP.Net Core应用程序前面配置了Azure Application Gateway + WAF
。我在“预防”模式下并在其中设置了默认的OWASP 3.0
规则。
我的问题是,通过WAF的每个请求都以一种或另一种方式失败,并且某些默认规则集返回了403 - Forbidden status
。
通过查看WAF日志,我发现很少有规则失败。
已识别的SQL十六进制编码
{
"message": "Warning. Pattern match \"(?i:(?:\\\\A|[^\\\\d])0x[a-f\\\\d]{3,}[a-f\\\\d]*)+\" at REQUEST_COOKIES:ASP.Net_Auth.",
"data": "Matched Data: H0XAa4 found within REQUEST_COOKIES:AspNetCore.Auth: CfDJ8El_2vmJILFHjQYUCDWwttioV16BAlL12KiQnTLGZztGtA8P0xbo1MosAgmrkUk4IQ7pF5O4ZMJbmRHsHxYHq842rq_hr8FUyMhAMo_5mQ-C_5jBrkRWqUGrYHMa6fVIj4xtGOfku...",
}
检测到SQL注释序列
"message": "SQL Comment Sequence Detected.",
"details": {
"message": "Warning. Pattern match \"(/\\\\*!?|\\\\*/|[';]--|--[\\\\s\\\\r\\\\n\\\\v\\\\f]|(?:--[^-]*?-)|([^\\\\-&])#.*?[\\\\s\\\\r\\\\n\\\\v\\\\f]|;?\\\\x00)\" at REQUEST_COOKIES:.AspNetCore.Identity.Application.",
"data": "Matched Data: --Z35d...- found within REQUEST_COOKIES:.AspNetCore.Identity.Application: CfDJ8El_2vmJILFHjQYUCDWwttihjUTpJneEVE1l-3UeTx...",
"file": "rules/REQUEST-942-APPLICATION-ATTACK-SQLI.conf",
"line": "1053"
}
超出PCRE限制
{
"requestUri": "/api/ping?_=240477821",
"message": "Execution error - PCRE limits exceeded (-8): (null)."
}
该URL / api / ping除200 OK外没有返回。
我找不到有关这些规则以及何时以及应启用/禁用哪些规则的良好文档。我敢肯定我可以禁用它们,但在我看来WAF非常激进,并且收到了太多的误报。
默认情况下是否存在一套良好且安全的规则,并且与ASP.Net Core应用程序兼容?
OWASP 3.0的工作原理是基于每个规则中得到的总分。单个请求将由一组规则处理,每个规则将为该请求添加一个分数,最后,如果分数超过限制,该请求将被阻止。
根据您的情况,您可以阅读规则定义here,并检查每个规则加到特定请求的分数。
最后一个规则PCRE限制是由于其他规则集获得的分数而无法命中的强制性规则。因此,您需要跟踪其他规则集并禁用或创建排除项以使站点正常运行。