OWASP Zed Attack Proxy (ZAP)とは?

OWASP ZAP

オープンソースの脆弱性検査ツールであるOWASP Zed Attack Proxy(ZAP)について説明します。

概要

OWASP Zed Attack Proxy (ZAP)の公式サイトによると以下のように説明されています(翻訳してみました)。

The Zed Attack Proxy (ZAP)は、Webアプリケーションの脆弱性を見付けるための簡単に使える統合ペネトレーションテストツールです。幅広いセキュリティの経験を持った人々に使って貰えるようにデザインされており、またペネトレーションテストをしたことがない開発者や機能テスターにとっても理想的なものになっています。
ZAPは手動で脆弱性を見付けることができるツール群はもちろんのこと、自動スキャナーも提供します。

OWASP Zed Attack Proxy Project

基本的な情報

  • OWASP のプロジェクトの1つで、2010年9月頃から開発されています。
    • Java製
    • Parosをベースに開発されました。
  • 現在のバージョン v2.2.2 (2014年3月8日時点)
  • Webアプリケーションに対して自動で脆弱性を検査することができます。
    • 使い方によっては、Webアプリケーションを破壊する可能性があります。
  • ローカルのプロキシになってブラウザの通信を見たり、編集して送信できます。
  • SSLページの通信にも対応しています。
  • 自動認証できます。
  • アドオンを追加することにより機能を追加することができます。

OWASP ZAP

機能

モード (Modes)

OWASP ZAPの動作を切り替えられます。

OWASP ZAP モード

データを保存する機能

静的スキャン (非破壊的スキャン)(Passive Scan)

  • Webアプリケーションのデータを破壊しないスキャンです。
  • ブラウザの設定でOWASP ZAPをプロキシとして手動でWebアプリケーションにアクセスした時や、スパイダー検索した時にバックグラウンドでこのスキャンが実行されます。
  • 読み取ったHTTPリクエスト・レスポンスの内容をチェックして脆弱性の可能性があるかどうか判断します。
  • 検出した脆弱性は[アラート]タブに表示されます。
  • 関連記事

動的スキャン (破壊的スキャン)(Active Scan)

OWASP ZAP 破壊的スキャン

スパイダー (Spider)

  • Webアプリケーション内に存在するページ(URL)を自動で探す機能です。

Ajaxスパイダー

  • JavaScriptによって変更が加えられたDOMツリーからURLを探します。
  • 静的なHTMLからURLを抽出する通常のスパイダーでは探すことのできないURLを抽出することができます。

攻撃対象とするWebアプリケーションを限定する機能

OWASP ZAP コンテキスト

Plug-n-Hack

  • Plug-n-Hack(Firefoxのアドオンです)をFirefoxにインストールすると、Firefoxの開発ツールバー上からOWASP ZAPを操作できるようになります。

OWASP ZAP Plug-n-Hack

OWASP ZAP Plug-n-Hack2

インターセプト・プロキシ機能 (Intercepting Proxy)

OWASP ZAP ローカルプロキシ

自動認証機能

  • 1度手動でログインしておき、そのHTTPリクエスト・レスポンスの内容を使ってログイン・ログアウトに関する設定を行うと、Webアプリケーションにアクセスする時に自動でログイン状態にしてくれます(ログインしてなければ、ZAPがログインリクエストを送ってログインしてくれます)。
  • スパイダー検索でログアウトページを踏んだ後でも自動で再ログインしてスパイダー検索を続けることができます。
  • こちらも参照して下さい。

OWASP ZAP 自動認証機能

ファジング (Fuzzing)

  • ファジングとはターゲットに対して不正なデータや予期しないデータ(ペイロード)を大量に送信する技術です。
  • HTTPリクエスト内の特定の文字列(パラメータ値など)に、予め用意したいろいろな文字列をセットし連続して送信することができます。
  • Fuzzdb files アドオンをインストールすることで、多くのペイロードを使うことができます。
  • こちらも参照して下さい。

OWASP ZAP ファジング

CSRF対策トークン(Anti CSRF Tokens)の自動生成

  • CSRF対策トークンを利用しているWebアプリケーションに対してActive Scannerもしくは Fuzzer を行う場合に使います。
  • ZAPがCSRF対策トークンを検知すると、トークンの値とトークンを生成したURLを記録します。
  • Active Scanner や Fuzzer での自動検査でCSRF対策トークンが必要なURLを検知すると、CSRF対策トークンを生成するページを取得してトークンを抽出し、パラメータとして利用してくれます。
  • 関連記事

OWASP ZAP CSRF対策トークン

Forced Browse

  • 多くのディレクトリ名が記述されたファイルを指定しておき、それを基にその各ディレクトリに順番にアクセスして存在チェックを行います。
    • ディレクトリにアクセスして、もしそのレスポンスの中で別のURL情報(同ホスト上)が見つかれば、そちらにもアクセスします。
  • 実行前に、使用するディレクトリ一覧ファイルを指定する必要があります。
    • [Forced Browse]タブ内でも選択できます。
  • [サイト]タブ内で対象となるリクエストを右クリック -> [攻撃]メニュー以下には、以下のForced Browseを実行する選択肢があります。
    • Forced Browse Site
      • 選択されたノードを含むサイト全体に対してForced Browseを開始します。
    • Forced Browse Directory
      • 選択されたディレクトリに対してForced Browseを開始します。
    • Forced Browse Directory (and children)
      • 選択されたディレクトリと、見つかったディレクトリに対してForced Browseを開始します。

OWASP ZAP Forced Browse

自動レグレッションテスト

  • 外部のビルドツールからOWASP ZAPを操作することで、ターゲットとなるWebアプリケーションに対する脆弱性検査を自動実行させることができます。
  • これにより通常のレグレッションテストに、OWASP ZAPによる自動脆弱性検査を組み込むことができます。
  • OWASP ZAPに用意されているREST APIを使います。

OWASP ZAP API

Scripts関連の機能

  • いろいろなスクリプト言語を実行してOWASP ZAPを操作することができます。
    • OWASP ZAP内部のデータにアクセスできます。
    • OWASP ZAPの実行ユーザ権限で動作します。
  • 使えるスクリプト言語
    • ECMAScript / Javascript (デフォルトで組み込まれている)
    • Zest (デフォルトで組み込まれている)
      • グラフィカルなセキュリティ用スクリプト言語
    • Groovy
    • Python
    • Ruby
    • など。
    • 各言語はアドオンとして用意されています。

WebSockets

  • 以下のことができます。
    1. WebSocket メッセージをインターセプトして表示することができます。
    2. WebSocket メッセージの特定の種類にブレークポイントをセットできます。
    3. WebSocket メッセージに対して fuzz することができます。(ブラウザもしくはサーバに、不正もしくは予測しないデータを送る)
  • [WebSockets]タブに、WebSocket メッセージが表示されます。

アドオン(Add-on)

  • Manage Add-ons dialogから追加機能をインストールできます。
  • 静的スキャンや動的スキャンの処理自体もアドオンになっています。
  • Add-onsのステータス
    • Release:高い品質と目的に適合していることを意味する。
    • Beta:まあまあの品質であるが、未完成もしくは更にテストが必要なことを意味する。
    • Alpha:開発の初期段階であることを意味する。

OWASP ZAP アドオン

OWASP ZAP アドオン2

エンコード/デコード/ハッシュ

レポート

  • HTMLやXMLフォーマットでレポートを出力することができます。
  • 次の項目が出力されます。
    • 検知された脆弱性の概要
    • 脆弱性が存在する対象の URL
    • 対象のパラメータ
    • 脆弱性を検知した際の検査コード
    • 設計・運用段階毎の本脆弱性の対策方法
    • 参考 URL
    • 検知された脆弱性の CWE番号
    • 検知された脆弱性の WASC番号

使い方の例

次の記事を参照して下さい。

その他

注意点

  • 自分の管理下にないホストには脆弱性検査を実行しないで下さい。
  • 検知された脆弱性が誤検知である可能性もあるため、レポートの内容を基に実際に手動でウェブサイトにアクセスし、脆弱性の存在を確認して下さい。

公式サイト

関連サイト

[最終更新日: 2014年5月2日]

Pocket

One thought on “OWASP Zed Attack Proxy (ZAP)とは?

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*