OWASP ZAPでのBasic認証の設定方法

March 28, 2021

こんにちは、荒木です。前回の日本語設定に続きOWASP ZAPについてです。

株式会社 KASUGAでは開発・テスト中のSEO対策サービスがあります。クローズドでのテスト中のためログインの他にアクセス時のBasic認証がかけられており、ブラウザ上で操作すればBasic認証を通すことができますが、ActiveScanやSpiderといった機能ではそのようにはいきません。今回はどのように設定すれば自動診断機能を使用できるのかを紹介したいと思います。

参考

OWASP ZAPの認証機能を理解するために参考にしたページを列挙しておきます。

設定ステップ

それでは必要な情報を確認します。

  1. OWASP ZAPにProxy設定されているブラウザを開く
  2. Basic認証のUnauthorizedになる履歴を作成
  3. www-authenticateヘッダーのrealm
  4. Session Propertiesでの認証種類・方法の設定

必要な情報がわかったので、ステップで見ていきましょう。

1. OWASP ZAPにProxy設定されているブラウザを開く

ブラウザがどのWEBサイトを利用しているのかをOWASP ZAPに知らせる必要があります。そのためにブラウザからサーバーへのリクエストをすべてOWASP ZAPをを通して行う設定がされている必要があります。ブラウザごとにProxyの設定を変更ができたり、拡張機能でそれを簡単に行えるようにしてくれるものもあります。

私は、ToolBarのFireFoxのアイコンを押すとProxy設定がされている状態で立ち上げてくれるので、以下のアイコンからブラウザを立ち上げました。

StartBrowser

Proxyが動作しているか確認のため今回のテストページであるhttp://jigsaw.w3.org/HTTP/にブラウザからアクセスしてみましょう。うまく動いているとSitesのツリーやHistoryタブの履歴としてアクセスした記録が残っているはずです。

access_history.png

2. Basic認証のUnauthorizedになる履歴を作成

履歴が作成されたので、SpiderでBasic認証のかかったページを取得していきます。Spiderを実行するまえにはContenxtの設定が必要になります。上のキャプチャの赤い部分で右クリックするとContextの設定画面がでてきます。もうすでに該当のURL配下がすべて対象となる正規表現が設定されていると思います。今回はこの設定のままで大丈夫ですが、他のサービスに自動診断を行う場合はさらに細かく設定を追加したほうがいいですね。とりあえず、右下のOKを押してContextを作成しておきます。

ContextSetting

Contextの設定ができると、SpiderでContext配下のリンクURLを洗いだしてくれるので実行してみましょう。注意としてはSpider Subtree Onlyのチェックが必要です。外していると、/HTTP/配下だけでなく、そこからリンクされているすべてのページの情報をとってきてしまうのでリストが増えてしまします。

Start Spider

3. Unauthorizedレスポンスの中のwww-authenticateヘッダーのrealmを確認・覚えておく

Spiderを実行するとSitesツリーにURLが増えているはずです、この中からBasicを探します。Basic以下のページにBasic認証がかけられているので、現状のままではアクセスできないはずです。

なので、Basic配下にActive Scanをかけてみます。スパイダーのときと同様にBasic上で右クリック->Attack->Active Scanからダイアログを表示し、設定を変更せずに実行します。

start active scan

Unauthorizedとなってアクセスが失敗していることがわかります。ここで、その失敗しているリクエストの一つを選択し、Responseを確認します。下のキャプチャのようにwww-authenticateヘッダーのrealmを覚えておきます。

Realm

4. Session Propertiesの設定(認証の種類、方法)

ようやくBasic認証の認証情報をOWASP ZAPに登録する準備ができました。最初にContextを設定しましたが、その設定画面で認証情報も設定することができます。

画面左上のFileメニューからSession Propertiesを選択し、現在のContextの設定画面をひらきます。ToolBarの電卓みたいなアイコンからも開けます。

Open Session Properties

Session Propertiesが開けたので各種設定を行っていきます。

まずはAuthenticationです。デフォルト設定では「Manual Authentication」となっているセレクトボックスを「HTTP/NTLM Authentication」に変更するとその下の設定種類が代わり、Hostname, Port, Realmが設定できるようになります。Hostnameはdomainである「jigsaw.w3.org」を入力し、Portはこのテストサイトはhttps通信を使用していないので80のままで大丈夫です。最後のRealmは先程のステップで覚えておいたwww-authenticateヘッダーのrealmの値である「test」になります。

Set Authentication

次にUsersです。右上のAddボタンから新規ユーザー設定を行います。認証情報はhttp://jigsaw.w3.org/HTTP/で確認できるようにguest/guestと登録します。

Set Users

これでようやく設定が完了しました!設定が確認できているか、もう一度Active Scanを実行してみましょう。手順はStep3と同じですが、認証情報が登録されてUserの設定が行えるので、今回設定したguestユーザーを選んでからScanを開始しましょう!

ReActive Scan

結果

再びActiveScanを実行すると、先程とは違い401 Unauthorizedがなくなっていることがわかると思います。Basic認証が通っているということですね!

No Unauthorized

まとめ

長かったですが、Basic認証のかかっているサイトにOWASP ZAPで自動診断を行うための設定を見てきました。ステップは多かったですが、やることはwww-authenticateヘッダーのrealmを覚えることと、それをContextの設定であるSession Propertiesに認証譲渡一緒に登録することだけです。

この記事ではJIGSAWをテストサイトとして利用させてもらいましたが、SpiderやActive Scanは多くのリクエストを送ってしまうので、やりすぎないように自分の開発環境等で行ってもらえるようにお願いします。私は冒頭でも紹介したテスト中のサービスに対して実行していて、この記事の確認のためだけに利用しました。

最後にやってよかったことをメモしておきます。OWASP ZAPのBasic認証に対しての設定を確認することが目的だったんですが、思ったよりも簡単にできたので、テストサービスの重要な機能のあるページに対してActive Scanをかけることができました。そして、副産物としてセキュリティ関連ではないですが不具合が見つけることができました。社内では、今後はしっかりOWASP ZAPを使っていこうとなりました。みなさまもぜひ試してみてください。

ブログを見ていただき、弊社にご興味を持ってくださった方は、ぜひ弊社Webサイトもご覧ください。お仕事のご相談も可能です。