# Az - Front Door

{{#include ../../../banners/hacktricks-training.md}}

## RemoteAddr Bypass

This **[blog post](https://trustedsec.com/blog/azures-front-door-waf-wtf-ip-restriction-bypass)** は、Azure Front Door でネットワーク制限を設定する際に **`RemoteAddr`** や **`SocketAddr`** に基づいてフィルタリングできることを説明しています。主な違いは、**`RemoteAddr`** が HTTP ヘッダ **`X-Forwarded-For`** の値を実際に使用するため、非常に簡単に回避できる点です。

このルールを回避するには、自動化ツールを使用して **brute-force IP addresses** を試行し、有効なものが見つかるまで繰り返すことができます。

これは [Microsoft documentation](https://learn.microsoft.com/en-us/azure/web-application-firewall/afds/waf-front-door-configure-ip-restriction) に記載されています。

## Credential Skimming via WAF Custom Rules + Log Analytics

Azure Front Door (AFD) の WAF Custom Rules と Log Analytics を組み合わせて、WAF を通過する平文の資格情報（またはその他のシークレット）を取得できます。これは CVE ではなく、WAF ポリシーを変更してログを読める者による正当な機能の悪用です。

Key behavior enabling this:
- AFD WAF Custom Rules は、リクエスト要素（headers や POST parameters を含む）にマッチできます。
- Custom Rule がアクションに Log traffic only を使用すると、評価は継続されトラフィックは通常通り進行します（no short-circuit）、そのためフローは正常／ステルスのままです。
- AFD は詳細な診断を Log Analytics に Category FrontDoorWebApplicationFirewallLog として書き込みます。マッチしたペイロードの詳細は details_matches_s に含まれ、ルール名は ruleName_s に格納されます。

### エンドツーエンドのワークフロー

1. ターゲットの POST パラメータを特定する
- ログインフォームを確認し、パラメータ名をメモする（例: username, password）。

2. Log Analytics への診断送信を有効化する
- In your Front Door profile > Monitoring > Diagnostic settings, logs を Log Analytics workspace に送信する。
- 最低限、カテゴリ FrontDoorWebApplicationFirewallLog を有効にする。

3. 悪意のある Custom Rule を作成する
- Front Door WAF Policy > Custom rules > New rule:
- Name: 無難な名前（例: PasswordCapture）
- Priority: 低い数値（例: 5）にして早く評価されるようにする
- Match: POST arguments username and password を Operator = Any (match any value) で指定する
- Action: Log traffic only

4. イベントを発生させる
```bash
curl -i -X POST https://example.com/login \
-H "Content-Type: application/x-www-form-urlencoded" \
--data "username=alice&password=S3cret!"
```
5. Log Analytics (KQL)から資格情報を抽出する
```kusto
AzureDiagnostics
| where Category == "FrontDoorWebApplicationFirewallLog"
| where ruleName_s == "PasswordCapture"
| project TimeGenerated, ruleName_s, details_matches_s
| order by TimeGenerated desc
```
ファイルの内容を貼ってください。指定されたルール（コード・クラウド/SaaS名・リンク・パス・タグ等は翻訳しない）に従って、日本語へ翻訳します。
```kusto
AzureDiagnostics
| where Category == "FrontDoorWebApplicationFirewallLog" and ruleName_s == "PasswordCapture"
| extend m = parse_json(details_matches_s)
| mv-expand match = m.matches
| project TimeGenerated, ruleName_s, match.matchVariableName, match.matchVariableValue
| order by TimeGenerated desc
```
一致した値は details_matches_s に表示され、ルールに一致した平文の値を含みます。

### なぜ Front Door WAF で、Application Gateway WAF ではないのか?
- Application Gateway WAF の custom-rule ログは問題となる POST/header の値を同じようには含めません; AFD WAF diagnostics は details に一致したコンテンツを含めるため、認証情報の取得が可能になります。

### ステルスとバリエーション
- リクエストを破壊しないように、また他のルールの評価を通常どおり維持するため、Action を Log traffic only に設定します。
- 低い数値の Priority を使い、ログルールが後続の Block/Allow ルールより先に評価されるようにします。
- 対象は POST params に限らず、任意の機微な名前/場所を指定できます（例: Authorization のような headers や、body fields に含まれる API tokens など）。

### 前提条件
- 既存の Azure Front Door インスタンス。
- AFD WAF policy を編集し、関連する Log Analytics workspace を読み取る権限。

## 参考資料

- [https://trustedsec.com/blog/azures-front-door-waf-wtf-ip-restriction-bypass](https://trustedsec.com/blog/azures-front-door-waf-wtf-ip-restriction-bypass)
- [Skimming Credentials with Azure's Front Door WAF](https://trustedsec.com/blog/skimming-credentials-with-azures-front-door-waf)
- [Azure WAF on Front Door monitoring and logging](https://learn.microsoft.com/en-us/azure/web-application-firewall/afds/waf-front-door-monitor)

{{#include ../../../banners/hacktricks-training.md}}
