利用Azure Front Door WAF窃取凭证
工作原理
Azure Front Door WAF允许创建自定义规则,这些规则可以匹配特定IP、请求头、正文内容和POST参数。通过创建匹配POST参数’username’和’password’的自定义规则,并将规则设置为"仅记录流量",攻击者可以悄悄将用户的用户名和密码发送到日志中。
演示过程
WAF设置
示例展示了受Azure Front Door WAF保护的Acme Computer Company登录页面。该攻击仅适用于Front Door WAF,不适用于Application Gateway WAF。
日志设置
确保日志从Front Door WAF流向Log Analytics工作区。仅需要"FrontDoor WebApplicationFirewallLog"类别。
添加恶意规则
- 在Front Door WAF中创建名为"PasswordCapture"的新自定义规则
- 设置优先级为5以确保在其他规则之前评估
- 配置If条件匹配POST参数’username’和’password'
- 设置操作为"仅记录流量"
生成事件
通过浏览器或curl请求模拟正常用户登录,生成包含用户名和密码的POST请求。
获取凭证
在Log Analytics工作区中执行KQL查询,检索匹配"PasswordCapture"规则的流量,在详细信息中可以看到暴露的用户名和密码。
攻击前提条件
- Azure Front Door WAF - 仅适用于Front Door WAF
- WAF保护登录页面 - 需要捕获有价值的凭证
- 修改WAF自定义规则的权限 - 需要Owner、Contributor或Network Contributor角色
- 读取Log Analytics工作区的权限 - 需要适当的读取权限
技术细节
- Front Door WAF日志非常详细,显示匹配模式
- Application Gateway WAF自定义规则日志仅显示匹配的规则,不显示违规内容
- 规则设置为"仅记录"时,其他规则仍会被评估
- 建议管理员使用Azure数据清理功能过滤密码字段
安全建议
此技术不仅限于用户名和密码,还可用于查找API密钥和Bearer令牌。重要的是要谨慎允许谁检查明文网络流量,以及谁有权读取日志。虽然此配置是故意恶意的,但在正常操作中WAF意外捕获密码的情况也很常见。