Azure 应用程序网关 WAF 阻止常见的 ASP.Net Core 请求

标签 azure asp.net-core azure-application-gateway azure-web-app-firewall

我已在 Azure WebApp 上运行的 ASP.Net Core 应用程序前面配置了 Azure 应用程序网关 + WAF。 我在预防模式下设置了默认的 OWASP 3.0 规则。

我遇到的问题是,通过 WAF 的每个请求都会以某种方式失败,并且某些默认规则集会返回 403 - 禁止状态

查看 WAF 日志,我发现很少有规则失败。

  1. 已识别 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...",
    }
    
  2. 检测到 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"
    }
    
  3. 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 限制是强制规则,由于其他规则集的请求得分而无法禁用该规则。因此,您需要跟踪其他规则集并禁用或创建排除项以使您的网站正常运行。

关于Azure 应用程序网关 WAF 阻止常见的 ASP.Net Core 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49867291/

相关文章:

c# - log4net:无法加载类型 'log4net.Appender.AdoNetAppender'

Azure 应用程序网关在单个应用服务环境后端池中具有多个应用程序

azure - 如何设置 Azure Front Door(标准/高级)以将 HTTP 请求转发到静态 Web 应用程序

c# - XUnit 和 ASP.NET Core 1.0 的依赖注入(inject)

azure - Azure 应用程序网关和 Azure Application Insights 之间的关联

azure - Kudu 调试控制台 Bash 与 SSH

azure - 使用 Azure 流分析托管标识通过 terraform 访问 SQL DB

Azure Devops 发布管道 XML 变量替换不起作用

azure - ADAL python 对 Windows 登录用户的支持

asp.net-core - ASP.Net Core 2.0 - 如何从中间件返回自定义 json 或 xml 响应?