利用Azure Front Door WAF窃取凭证的技术分析

本文详细介绍了攻击者如何通过Azure Front Door WAF的自定义规则和Log Analytics工作区窃取用户登录凭证的技术细节,包括规则配置、日志查询和实际演示过程。

利用Azure Front Door WAF窃取凭证的技术分析

工作原理

Azure Front Door WAF允许创建自定义规则。这些规则可以匹配特定的IP、头部、正文内容和POST参数。

如果创建一个匹配POST参数’username’和’password’任何值的自定义规则,并将规则设置为"仅记录流量",我们就可以悄悄地将用户的用户名和密码发送到日志中。

演示

WAF设置

这是Acme Computer Company的登录页面,受到Azure Front Door WAF的保护。

注意:此攻击不适用于Application Gateway WAF,仅适用于Front Door WAF。

检查HTML源代码,我们看到它POST两个参数:username和password。

日志设置

确保日志从Front Door WAF流向Log Analytics工作区。转到Azure门户左侧监控标题下的"诊断设置",如果为空,选择"添加诊断设置"并进行配置。

我们真正只需要"FrontDoor WebApplicationFirewallLog"类别。

添加恶意规则

要开始窃取密码,我们首先在Front Door WAF中创建一个新的自定义规则。将其命名为"PasswordCapture",将优先级设置为较低的值,如5。

这将确保它在可能阻止或允许流量的其他规则之前被评估。

接下来,配置If条件以匹配先前识别的POST参数——‘username’和’password’。对于这些,我们将操作符设置为"任何"值。这将匹配用户名或密码的任何值。配置Then部分为"仅记录流量"。

点击底部的"添加"。您现在应该在列表中看到新的自定义规则,动作为"记录"。

点击"保存"完成更改。

值得注意的是,通常一旦规则匹配,WAF就会停止评估其他规则。但是,由于我们的规则设置为"仅记录",其他规则仍然会被评估。

生成事件

在收集一些登录事件后,是时候收获成果了!

转到WAF的Log Analytics工作区。选择左侧的"日志"。

在右上角,将其从"简单模式"切换到"KQL模式":

现在输入以下查询。如果您将规则命名为"PasswordCapture"以外的名称,请输入该名称。

1
2
3
4
5
AzureDiagnostics
| where Category == "FrontDoorWebApplicationFirewallLog"
  and ruleName_s == "PasswordCapture"
| project TimeGenerated,  ruleName_s, details_matches_s
| order by TimeGenerated desc

这应该会列出匹配我们包含’username’和’password’ POST规则的最近流量。展开详细信息,您将看到显示的用户名和密码。

在正常的WAF操作期间,可以使用Azure的数据清理功能保护敏感数据不出现在字段中。我建议管理员至少包含对密码字段的过滤器。

此攻击的先决条件

要执行此攻击,您需要以下几项:

  1. Azure Front Door WAF
  2. 保护登录页面
  3. 有权修改WAF的自定义规则
  4. 有权访问WAF的Log Analytics工作区

Azure Front Door WAF

如前所述,此攻击仅适用于Front Door WAF,不适用于Application Gateway WAF。Front Door WAF的日志非常详细,显示匹配模式。Application Gateway的自定义规则日志仅显示匹配的规则,而不显示违规内容。

WAF保护登录页面

第二个要求——登录页面——值得捕获的内容。如果公司使用WAF保护站点,可能是因为该站点接受用户提供的输入并具有动态页面。

有权修改WAF自定义规则

以下订阅级角色将有权更新自定义规则:

  • 所有者
  • 参与者
  • 网络参与者

有权读取Log Analytics工作区

要读取Log Analytics工作区,您需要在订阅、资源组或Log Analytics工作区本身分配以下任何角色:

  • 所有者
  • 参与者
  • 读者
  • Log Analytics参与者
  • Log Analytics读者
  • 监控读者
  • 监控参与者
  • 监控策略参与者

结论

虽然这是在Azure Front Door WAF上演示的,但通用方法也可能适用于其他产品。我们不仅限于用户名和密码。我们还可以查找在头部传递的API密钥和承载令牌。

重要的启示是:小心让谁检查明文网络流量,并小心谁被允许读取您的日志。虽然此配置是故意恶意的,但我见过许多密码在正常操作期间被WAF意外捕获。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计