JSON コマンドインジェクション保護
コマンドインジェクション保護のしくみ
-
受信した JSON リクエストに対して、WAF はトラフィックにキーワードや特殊文字がないか調べます。JSON リクエストに、拒否されたキーワードまたは特殊文字のいずれにも一致するパターンがない場合、リクエストは許可されます。それ以外の場合、要求は設定されたアクションに基づいてブロック、ドロップ、またはリダイレクトされます。
-
リストからキーワードまたは特殊文字を除外する場合は、特定の条件下でセキュリティチェックをバイパスする緩和ルールを作成できます。
-
ロギングを有効にすると、ログメッセージを生成できます。ログを監視して、正当な要求に対する応答がブロックされているかどうかを判断できます。ログメッセージの数が大幅に増加すると、攻撃を開始しようとしたことを示している可能性があります。
-
また、統計機能を有効にして、違反やログに関する統計データを収集することもできます。stats カウンタの予期しない急増は、アプリケーションが攻撃を受けていることを示している可能性があります。正当な要求がブロックされた場合は、新しい緩和ルールを構成する必要があるか、既存の緩和ルールを変更する必要があるかを再確認するために、構成を再確認する必要があります。
コマンドインジェクションチェックで拒否されたキーワードと特殊文字
<commandinjection>
<keyword type="LITERAL" builtin="ON">7z</keyword>
<keyword type="LITERAL" builtin="ON">7za</keyword>
<keyword type="LITERAL" builtin="ON">7zr</keyword>
…
</commandinjection>
| ; & $ > < ' \ ! >> #
CLI を使用した JSON コマンドインジェクションチェックの設定
set appfw profileコマンドを使用するか、appfw profileコマンドを追加して JSON コマンドインジェクション設定を構成できます。 ブロック、ログ、統計の各アクションを有効にできます。また、ペイロードで検出するキーワードや文字列などのコマンドインジェクションタイプも設定する必要があります。
set appfw profile <profile-name> –cmdInjectionAction <action-name> -CMDInjectionType <CMDInjectionType>]
set appfw profile profile1 -JSONCMDInjectionAction block -JSONCMDInjectionType CmdSplChar
Cmd SplChar -特殊文字をチェックする CmdKeyWord -コマンドインジェクションをチェックするキーワード CmdSplCharANDKeyWord -これはデフォルトのアクションです。アクションは特殊文字とコマンドインジェクションをチェックします。キーワードとブロックは、両方が存在する場合に限ります。 CmdSplCharORKeyWord -特殊文字とコマンドインジェクションキーワードとブロックのいずれかが見つかった場合にチェックします。
JSON コマンドインジェクション保護チェックのための緩和ルールの設定
bind appfw profile <profile name> –JSONCMDURL <expression> -comment <string> -isAutoDeployed ( AUTODEPLOYED | NOTAUTODEPLOYED ) -state ( ENABLED | DISABLED )
ヘッダーの正規表現の緩和ルールの例
bind appfw profile abc_json -jsoncmDURL http://1.1.1.1/hello.html
bind appfw profile abc_json -jsoncmDURL http://1.1.1.1/*”
unbind appfw profile abc_json -jsoncmDURL “ http://1.1.1.1/*”
GUI を使用して JSON コマンドインジェクションチェックを設定する
-
[NetScaler Web App Firewall プロファイル ]ページで、 [詳細設定] セクションに移動し、[ セキュリティチェック]をクリックします。
-
-
アクション。JSON コマンドインジェクションのセキュリティチェックに対して実行するアクションを 1 つ以上選択します。
-
リクエストに含まれるものをチェックしてください。コマンドインジェクションパターンを選択して、受信リクエストにパターンがあるかどうかを確認します。
-
-
[OK] をクリックします。
コマンドインジェクショントラフィックおよび違反統計情報の表示
stat appfw profile profile1
| Appfw プロファイルのトラフィック統計 | レート (/s) | 合計 |
|---|---|---|
| リクエスト | 0 | 0 |
| 要求バイト数 | 0 | 0 |
| レスポンス | 0 | 0 |
| 送信バイト数 | 0 | 0 |
| 中止する | 0 | 0 |
| リダイレクト | 0 | 0 |
| 長期平均応答時間 (ミリ秒) | -- | 0 |
| 最近の平均応答時間 (ミリ秒) | -- | 0 |
| HTML/XML/JSON 違反の統計情報 | レート (/s) | 合計 |
|---|---|---|
| 開始URL | 0 | 0 |
| URL を拒否する | 0 | 0 |
| リファラーヘッダー | 0 | 0 |
| バッファオーバーフロー | 0 | 0 |
| Cookie の整合性 | 0 | 0 |
| Cookie ハイジャック | 0 | 0 |
| CSRF フォームタグ | 0 | 0 |
| HTML クロスサイトスクリプティング | 0 | 0 |
| HTML SQL インジェクション | 0 | 0 |
| フィールド形式 | 0 | 0 |
| フィールドの一貫性 | 0 | 0 |
| クレジットカード | 0 | 0 |
| セーフオブジェクト | 0 | 0 |
| シグネチャ違反 | 0 | 0 |
| コンテンツの種類 | 0 | 0 |
| JSON サービス拒否 | 0 | 0 |
| JSON SQLインジェクション | 0 | 0 |
| JSON クロスサイトスクリプティング | 0 | 0 |
| ファイルアップロードの種類 | 0 | 0 |
| コンテンツタイプ XML ペイロードを推測 | 0 | 0 |
| HTML CMD インジェクション | 0 | 0 |
| XML 形式 | 0 | 0 |
| XML サービス拒否 (XDoS) | 0 | 0 |
| XML メッセージ検証 | 0 | 0 |
| Web サービスの相互運用性 | 0 | 0 |
| XML SQL インジェクション | 0 | 0 |
| XML クロスサイトスクリプティング | 0 | 0 |
| XML 添付ファイル | 0 | 0 |
| SOAP フォールト違反 | 0 | 0 |
| XML ジェネリック違反 | 0 | 0 |
| 違反総数 | 0 | 0 |
| HTML/XML/JSON ログ統計 | レート (/s) | 合計 |
|---|---|---|
| URL ログの開始 | 0 | 0 |
| URL ログの拒否 | 0 | 0 |
| リファラーヘッダーログ | 0 | 0 |
| バッファオーバーフローログ | 0 | 0 |
| Cookie 整合性ログ | 0 | 0 |
| Cookie ハイジャックのログ | 0 | 0 |
| タグログからの CSRF | 0 | 0 |
| HTML クロスサイトスクリプティングログ | 0 | 0 |
| HTML クロスサイトスクリプティング変換ログ | 0 | 0 |
| HTML SQL インジェクションログ | 0 | 0 |
| HTML SQL 変換ログ | 0 | 0 |
| フィールド形式ログ | 0 | 0 |
| フィールド整合性ログ | 0 | 0 |
| クレジットカード | 0 | 0 |
| クレジットカード変換ログ | 0 | 0 |
| セーフオブジェクトログ | 0 | 0 |
| シグネチャログ | 0 | 0 |
| コンテンツタイプログ | 0 | 0 |
| JSON サービス拒否ログ | 0 | 0 |
| JSON SQLインジェクションログ | 0 | 0 |
| JSON クロスサイトスクリプティングログ | 0 | 0 |
| ファイルアップロードタイプログ | 0 | 0 |
| コンテンツタイプ XML ペイロードを推測 L | 0 | 0 |
| JSONCMD インジェクション | 0 | 0 |
| HTML コマンドインジェクションログ | 0 | 0 |
| XML 形式ログ | 0 | 0 |
| XML サービス拒否 (XDoS) ログ | 0 | 0 |
| XML メッセージ検証ログ | 0 | 0 |
| WSI ログ | 0 | 0 |
| XML SQL インジェクションログ | 0 | 0 |
| XML クロスサイトスクリプティングログ | 0 | 0 |
| XML 添付ファイルログ | 0 | 0 |
| SOAP フォールトログ | 0 | 0 |
| XML 汎用ログ | 0 | 0 |
| ログメッセージの総数 | 0 | 0 |
| HTML/XML/JSON ログ統計 | レート (/s) | 合計 |
|---|---|---|
| JSON コマンド注入ログ | 0 | 0 |
| XML 形式のログ | 0 | 0 |
NetScaler GUIを使用したJSONコマンドインジェクションの統計情報の表示
JSON コマンドインジェクション用の微粒子緩和の設定
-
キーネーム
-
キーバリュー
考慮すべきポイント
-
値式はオプションの引数です。フィールド名には値式がない場合があります。
-
1 つのキー名を複数の値式にバインドできます。
-
値式には値型を割り当てる必要があります。値の型は、1) キーワード、2) SpecialString です。
-
キー名と URL の組み合わせごとに複数の緩和ルールを設定できます。
コマンドインターフェイスを使用してコマンドインジェクション攻撃に対する JSON 細粒度緩和の設定
bind appfw profile <profile name> -jsoncmdURL <URL> -key <key name> -valueType <keyword/SpecialString> <value Expression>
bind appfw profile appprofile1 -jsoncmdurl www.example.com -key blg_cnt -isRegex NOTREGEX -valueType Keyword “cat” -isvalueRegex NOTREGEX
-
JSON コマンドインジェクション緩和規則スライダーで 、「 追加」をクリックします。
-
-
有効
-
名前は正規表現ですか
-
キー名
-
URL
-
値の種類
-
コメント
-
リソース ID
-
-
[Create] をクリックします。

