Web Application Security Memo

ウェブセキュリティに関するメモ書き

OWASP ZAP 自動認証機能の設定

※当サイトにはプロモーションが含まれています。

公開日: 更新日:

OWASP ZAP

OWASP ZAP v2.2.2における自動認証設定の手順を説明します。

自動認証(ログイン)機能とは、ブラウザで認証機能を持つWebアプリケーションにアクセスした時に、ログインしていなければ自動でログイン状態にしてくれ、その状態で元のURLにアクセスし直してくれる機能です(ブラウザのプロキシ設定が必要です)。

これにより、スパイダー検索等を行う時に、ログアウトURLにアクセスしてしまった後でも自動で認証(ログイン)して処理を続行できるようになります。

今回の設定で使うWebアプリケーション

BodgeIt

設定項目

  • 今回は必要最低限の項目を設定します。
  • 設定する項目
    • [セッション・プロパティ] -> [Include in context]
      • URL正規表現(検査対象WebアプリのURL)
    • [セッション・プロパティ] -> [Authentication]
      • Login URL (ログインするURL)
      • Login POST data (ログイン時に送信するデータ)
      • Logged out indicator (ログアウト時に表示される文字列)
        • 実際はこの代わりに Logged in indicator (ログイン中に表示される文字列)でもよく、都合のよい方を設定すればいいです。

OWASP ZAP セッションのプロパティアイコン

OWASP ZAP セッションのプロパティ

OWASP ZAP セッションのプロパティ2

手順1: Include in context のURL正規表現の設定

  • コンテキスト(Context)に、この検査の対象となるURL正規表現を登録します。
  • 今回はBodgeIt全体を対象とするので、「\Qhttp://192.168.0.50/bodgeit\E.*」という正規表現を登録します。
  • [サイト]タブ上からリクエストを右クリックして登録することもできます。

OWASP ZAP Login URLの登録

OWASP ZAP 登録されたLogin URL

手順2: Login URL と Login POST dataの設定

  • ブラウザ上でログイン操作を手動で行うと、[サイト]タブもしくは[履歴]タブ内にそのPOSTリクエストが表示されるので、右クリックして[Flag as Context] -> [1: Login request]を選択することにより Login URL と Login POST data が登録されます。
    • 登録されたURLの正規表現に問題があれば修正します。

OWASP ZAP Login POST dataの登録

手順3: Logged out indicator regexの設定

  • ブラウザ上でログアウト操作を手動で行い、ログイン時には表示されなかった文字列を探して Logged out indicator regex に登録します。
  • [レスポンス]タブ内のレスポンスボディ上で対象文字列を右クリックし、[Flag as Context] -> [1: Logged out indicator]を選択して登録することもできます。
  • 今回は、ログアウトのリンクがよさそうだったので「Logout」を登録します。

OWASP ZAP Logged out indicator regexの登録

  • Logged out indicator の代わりに Logged in indicator を設定する場合も、同じような手順で登録できます。

手順4: 自動認証を有効にします

  • 次のアイコンをクリックすると自動認証が有効になります。

OWASP ZAP 自動認証アイコン(disabled)

OWASP ZAP 自動認証アイコン(enabled)

設定後の動作

  • Logged out indicator として設定した文字列を含むWebページにアクセスすると、OWASP ZAPの中からログインリクエストが送信されてログイン状態になった上で再度元のWebページにアクセスし、そのレスポンスをブラウザに返してくれます。
  • この設定を行うと、より有効な自動脆弱性検査が実行できます。

OWASP ZAP ログアウト状態

OWASP ZAP ログイン状態

認証済みかどうかの判断

認証済みかどうかは次のロジックで判断されます。(v2.2.2)

  1. Logged in indicator が空でない且つ Logged in indicator がレスポンスボディにマッチする場合
    • 認証済みであると判断する。
  2. Logged out indicator が空でない且つ Logged out indicator がレスポンスボディにマッチしない場合
    • 認証済みであると判断する。
  3. それ以外
    • 未認証であると判断する。

Logged out indicator(または Logged in indicator)の選定

  • Logged out indicatorには、ログイン状態でない場合に、常にHTML上に存在する文字列(もちろんブラウザ上に表示された文字列ではなくHTMLとしての文字列です)を探して登録するのが理想的です。
  • Logged in indicatorには、ログイン中に常にHTML上に存在する文字列を探して登録するのが理想的です。
  • 仕組みから考えると、このような文字列が存在しないWebアプリケーションだと自動認証機能は有効に活用できないと思われます。

[最終更新日: 2014年4月28日]