ウェブアプリケーションを開発しながら、手軽に脆弱性検査する方法

OWASP ZAP

以前、OWASP ZAP に追加された attack mode の概要 というエントリを書きましたが、このATTACK modeを使った簡単なセキュリティ検査の手順をメモしておきます。この機能を使えば、ウェブアプリケーションの開発中にZAPが勝手に脆弱性スキャンしてくれます。

※ この機能が追加される バージョン 2.4 はまだリリースされていないのですが、こちら から ZAP Weekly をダウンロードすれば試すことができます。

概要

基本的には、ウェブアプリケーション開発時にウェブブラウザのプロキシとして ZAP を指定おくだけです。この時、ZAP 側で コンテキストというものを設定して、ATTACK mode にしておけば、アクセスしたURLに対して勝手に脆弱性をスキャンしてくれます。

ATTACK mode について

OWASP ZAP に追加された attack mode の概要 に書いた通りなのですが、今までのバージョンでもZAPをブラウザのプロキシにしておけば、ブラウザからアクセスしたURLに対して Passive Scan というスキャンは行われていました。ただ、この Passive Scan は、ウェブアプリケーションに対して軽い内容の検査しか行われません。しかし、今回 ATTACK mode ができたおかげで、インジェクション系の検査等を行う Active Scan まで勝手に実行してくれるようになりました。ATTACK mode で検査する項目を個別に設定することもできます。

手順

  1. 開発中のウェブアプリケーションにブラウザでアクセスできるような状態にしておきます。
  2. ZAP を起動します。
    • こちら から ZAP Weekly をダウンロードすれば 2.4 の機能を試すことができます。
    • Mac で ZAP Weekly を使う場合、もしくはLinuxを使う場合は、ターミナルから zap.sh を実行して下さい。(Windowsの場合は zap.bat)
    • 起動時にダイアログが表示されますが、それについては OWASP ZAP 2.4 のデータ保存について を参照して下さい。
  3. ブラウザのプロキシ設定で、ZAP を設定します。
    • この時指定するIPとポート番号は、ZAP側で [Tools] -> [Options…] -> [Local proxy] から設定できます。
  4. 開発中のウェブアプリケーションにブラウザでアクセスします。
  5. アクセスしたURLが ZAPのSites(サイト)タブ上に現れるので、右クリックしてURL(の正規表現文字列)をコンテキストに登録します。
    • 2015-03-16_ZAP_Include_in_Context
    • 2015-03-18_ZAP_Context
    • URLを右クリック -> [Include in Context] -> [Default Context] を選択すると自動で登録されます。
    • ここで追加された正規表現が目的と合っていない場合は、手動で修正して下さい。
    • 除外するURLも登録するとよいかもしれません(Contextダイアログの [Exclude from context] から登録できますし、サイトタブ上でURLを右クリックして追加することもできます)。※ ログアウトするURL, データを削除するURL等も考慮しておいて下さい。
    • ここで設定したコンテキストはデフォルトでスコープの対象となります。このスコープがスキャン対象となるため、開発中のサイトのURLだけが合致するように慎重に設定して下さい。
  6. ZAP を ATTACK mode にします。
    • 2015-03-16_ZAP_AttackMode
    • 2015-03-18_ZAP_Set_Attack_mode
    • 2015-03-18_ZAP_AttackMode_Dialog
    • このダイアログが表示されたら、[Yes]をクリックします。
    • このスコープ内のアクセス済URL(コンテキストに登録したURL正規表現に一致したもののみ)に対して Active Scan が開始されます。
  7. 開発を続けます。
    • ブラウザでアクセスしたURLに対して、随時 ZAPが脆弱性スキャンしてくれます。
  8. どこかのタイミングで、ZAP のアラートタブを開き、検知された脆弱性情報を確認します。
    • 2015-03-16_ZAP_Alerts_tab
  9. 問題のありそうな情報に対しては、詳細を調査して対応します。
    • 誤検知や重要度の低い情報もあると思います。

ATTACK mode 専用の検査項目を作成する(オプション)

  1. [Anylyze]メニュー -> [Scan Policy Manager…] を選択します。
    • 2015-03-16_ZAP_Menu_Anylyse_ScanPolicyManager
  2. [Add]ボタンをクリックします。
    • 2015-03-16_ZAP_Scan_Policy_Manager
  3. お好みの項目を設定します。
    • 2015-03-16_ZAP_Scan_Policy
    • 設定したら、名前を付けておきます。
  4. [Tools]メニュー -> [Options] を選択し、[Active Scan]をクリックします。
    • 2015-03-16_ZAP_Options_ActiveScan
    • “Attack mode scan policy” で先程作成したポリシーを選択します。

メモ

  • 検査項目にもよりますが、Active Scan により大量のアクセスが発生します。
  • その際、パラメータとしていろいろな値が送信されますが、基本的には被害を与えるような値は使用されません。もし変な値がデータベースに登録されて困るようなら、最近のフレームワークだと migration 機能がありますので、この種の機能を使ってデータをリセットしましょう。
  • Seleniumでテスト書けば、そのテスト内からアクセスしたURLに対しても脆弱性スキャン(Active Scan)してくれます(使用するブラウザのプロキシ設定を記述する必要があります)。

最終更新日: 2015-3-22

Pocket

コメントを残す

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

*