Zest
Zestは、実験的な特殊スクリプト言語 (ドメイン固有言語またはDSLとも呼ばれます) です。元々はMozillaのセキュリティチームによって開発され、Webに特化したセキュリティツールで使用されることを目的としています。
これはZAPにデフォルトで含まれています。
エンジン名
エンジン名は Mozilla Zestです。ZAPを手動またはプログラムで設定する際には、この名称を使用してください。
Zestスクリプトの作り方
Zestスクリプトを作成するには、様々な方法があります:
「新規Zestスクリプトを記録」ボタン
- メインツールバーの「新規Zestスクリプトを記録」ボタンをクリックします
- 「Zestスクリプトの追加」ダイアログでスクリプトの名前を入力します
- 記録したいリクエストのプレフィックス (接頭辞) を選択します。すべてのリクエストを記録する場合は空欄のままにします。
- 「保存」ボタンをクリックします
- 「新規Zestスクリプトを記録」ボタンが押されたままになり、「新規Zestスクリプトを記録中」に変わり、赤いアイコンになります。
新しいZestスクリプトは、「スクリプト」タブに赤い「記録中」アイコン付きで表示されます。
指定したプレフィックス配下で行われたリクエストは、すべてこのスクリプトに追加されます。
記録を停止するには、「新規Zestスクリプトを記録中」ボタンを再度クリックします。
この方法では「スタンドアロン」タイプのZestスクリプトしか記録できない点に注意してください。他のタイプのZestスクリプトを作成したい場合は、別の方法を用いる必要があります。
また、任意のスタンドアロンZestスクリプトを右クリックし、「記録を開始」および「記録を停止」ボタンを使用することもできます。
スクリプトの記録には、主にサーバーサイドとクライアントサイドの2つの方法があります。クライアントサイドでの記録には、ZAPブラウザ拡張機能と専用のクライアントアドオンを活用します。
この組み合わせにより、ユーザーの操作を効率的にZestスクリプトとしてキャプチャし、保存することができます。
「新しいスクリプト」ボタン
- 「スクリプト」ツリータブに移動します
- 「新しいスクリプト」ボタンをクリックします
- 「新規スクリプト」ダイアログで、スクリプトに適した名前を入力します
- スクリプトタイプを選択します (詳細はスクリプトアドオンのヘルプを参照)
- Zestスクリプトエンジンを選択します
- (必要に応じて) テンプレートを一つ選択します
- 「保存」ボタンをクリックします
この方法では、あらゆるタイプのZestスクリプトを作成できます。
Zestテンプレートを右クリック
- 「スクリプト」ツリータブに移動します
- 「テンプレート」ノードを展開し、使用するテンプレートを探します。
- テンプレートを右クリックし、 「新しいスクリプト…」を選択します。
- 「保存」ボタンをクリックします
この方法では、あらゆるタイプのZestスクリプトを作成できます。
リクエストを右クリック
- 「履歴」タブなどのリクエストが表示されているタブに移動します
- 1つ、または複数のリクエストを選択します
- 選択範囲を右クリックします
- 「Zest スクリプトの追加」メニューを選択すると、既存のスタンドアロンスクリプトを選択したり、新しいスタンドアロンスクリプトを作成したりすることができます。
リクエストを追加できるのは「スタンドアロン」タイプのZestスクリプトのみである点に注意してください。
Plug-n-Hack
最近のバージョンのFirefoxを使用している場合、ブラウザ内からZestスクリプトを作成できます。
- ZAP「クイックスタート」タブの「Plug-n-Hack」ボタンをクリックします
- Plug-n-Hack Firefoxアドオンをインストールし、すべてのダイアログを受け入れます
- Firefoxで 'Shift F2'を押してDeveloper Toolbarにアクセスしてください
- 新しいZestスクリプトの記録を開始するために、 「zap record on global」と入力します
- ZAPを通じて行ったリクエストがすべてスクリプトに追加されます
- 「zap record off global」と入力してスクリプトの記録を停止します
この方法では「スタンドアロン」タイプのZestスクリプトしか記録できない点に注意してください。他のタイプのZestスクリプトを作成したい場合は、別の方法を用いる必要があります。
Zestスクリプトの編集
Zestスクリプトは、「スクリプト」ツリータブでグラフィカルに編集します。
各ステートメントはツリー内のノードとして表現されます。ノードをダブルクリックすると、そのステートメントのプロパティを編集できます。
Zestのノードを右クリックすることで、ステートメントの追加、移動、削除が可能です。
また、他のタブに表示されているリクエストを右クリックして、「スタンドアロン」タイプのZestスクリプトに追加することもできます。
さらに、「リクエスト」タブや「レスポンス」タブでテキストを選択した際に利用できる、いくつかの右クリックオプションもあります。
Zestには一連の「組み込み」変数が含まれているほか、独自の変数を宣言することも可能です。
編集ダイアログでは(必要に応じて)右クリックメニューが提供され、利用可能な変数名を貼り付けることができます。
認証スクリプト
認証スクリプトでは、 TOTPというZAPのカスタム変数を使用できます。この変数は、ユーザーの認証情報にあるTOTPデータから生成されたTOTPコードを、入力フィールドに送信するために利用します。
Import/Export Integration
When the Import/Export add-on is installed, Zest adds the following functionality:
Import Zest Script
An option to import messages from a Zest script file is available via the 'Import' menu ('Import Zest Script...').
The HTTP requests (and responses, if present) from the script are added to the Sites tree and History panel without replaying them.
Export as Zest Script
The Export menu supports exporting the history as a Zest script file.
This creates a Zest script containing the HTTP requests (and responses).
Automation Framework
When both the Import/Export and Automation add-ons are installed, Zest scripts can be imported and exported via the Automation Framework.
Import Job
Use the Import/Export add-on's import job with type: zest to import HTTP messages from a Zest script file (.zst):
- type: import
parameters:
type: zest
fileName: /path/to/script.zst
The HTTP requests (and responses, if present) from the script are added to the Sites tree and History panel without replaying them.
Export Job
Use the Import/Export add-on's export job with type: zest to export messages to a Zest script file.
The source parameter can be history (manually/proxied messages) or all (all messages including those generated by ZAP):
- type: export
parameters:
type: zest
source: history
fileName: /path/to/output.zst
外部リンク