You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure应用网关WAF自定义规则无法拦截PHP请求的问题求助

问题:Azure应用网关WAF自定义规则未拦截PHP扫描请求

背景

我在WebAPI、FunctionApp(均基于.NET6+开发)前端部署了带有WAF的Azure应用网关,近期发现日志中存在大量针对PHP文件的请求,疑似漏洞扫描脚本。通过以下YAML流水线脚本添加了WAF自定义拦截规则:

- task: AzureCLI@2
  displayName: Add application gateway WAF policy custom rule
  inputs:
    azureSubscription: 'MySub'
    scriptType: 'pscore'
    scriptLocation: 'inlineScript'
    inlineScript: >
      az network application-gateway waf-policy custom-rule create 
      --name BlockPhpExtension 
      -g MyRg 
      --policy-name AGDefault-wafpol
      --action Block 
      --priority 10 
      --rule-type MatchRule

- task: AzureCLI@2
  displayName: Add application gateway WAF policy custom rule match-condition
  inputs:
    azureSubscription: 'MySub'
    scriptType: 'pscore'
    scriptLocation: 'inlineScript'
    inlineScript: >
      az network application-gateway waf-policy custom-rule match-condition add 
      --resource-group MyRg 
      --policy-name AGDefault-wafpol 
      --name BlockPhpExtension 
      --match-variables RequestUri --operator EndsWith --values .php --transform lowercase

规则在Azure门户显示配置正确,但创建16小时后,应用日志仍出现4小时内的PHP请求,需排查问题原因并解决。

可能原因及解决方法

1. 规则优先级冲突

  • 原因:若存在优先级更高(数值更小)的自定义规则或托管规则允许了此类请求,会覆盖你的拦截规则。
  • 解决方法:
    • 列出所有自定义规则确认优先级顺序:
      az network application-gateway waf-policy custom-rule list --resource-group MyRg --policy-name AGDefault-wafpol --output table
      
    • 确保BlockPhpExtension(优先级10)是同类型匹配规则中优先级最高的,调整冲突规则的优先级或删除允许类规则。

2. 请求URI匹配逻辑存在漏洞

  • 原因:扫描请求可能不是以.php直接结尾,例如带查询参数(/test.php?param=1)、带斜杠后缀(/test.php/),此时EndsWith匹配会失效。
  • 解决方法:
    • 修改匹配条件为Contains,覆盖更多场景:
      az network application-gateway waf-policy custom-rule match-condition update 
      --resource-group MyRg 
      --policy-name AGDefault-wafpol 
      --name BlockPhpExtension 
      --match-variables RequestUri --operator Contains --values .php --transform lowercase
      
    • 可选:添加额外匹配条件,比如针对RequestUri的Path部分进行精准匹配,或覆盖.php/这类变种后缀。

3. WAF策略未关联到应用网关

  • 原因:自定义规则所在的WAF策略未绑定到目标应用网关,导致规则未生效。
  • 解决方法:
    • 检查当前绑定状态:
      az network application-gateway show --resource-group MyRg --name YourAGName --query "wafPolicy"
      
    • 若未绑定,执行绑定命令:
      az network application-gateway waf-policy assign --resource-group MyRg --gateway-name YourAGName --policy-name AGDefault-wafpol
      

4. WAF规则生效延迟或缓存问题

  • 原因:Azure WAF规则可能存在节点缓存延迟,部分边缘节点未及时同步新规则。
  • 解决方法:
    • 通过Azure门户重新保存WAF策略,或使用CLI重新应用策略触发同步;
    • 查看WAF日志(Log Analytics的AzureDiagnostics表),筛选RuleName_s == "BlockPhpExtension"确认规则是否被触发,若有触发记录则说明规则已生效,未拦截的请求可能是匹配逻辑未覆盖的场景。

5. 请求绕过WAF处理

  • 原因:应用网关的路由规则配置错误,部分请求未经过WAF模块处理(例如路由设置为Bypass WAF)。
  • 解决方法:
    • 检查所有指向后端应用的路由规则,确认关联的规则集已启用WAF;
    • 验证侦听器与路由的绑定关系,确保所有流量都经过WAF策略处理。

内容的提问来源于stack exchange,提问作者Paul Meems

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 17:50:42