OWASP ZAPでWEBサイトの脆弱性を簡易チェックする方法まとめ

security

ひょんなことからWEBサイトの脆弱性をチェックする機会がありました。

オープンソースの脆弱性チェックツール「OWASP ZAP」でWEBサイトの脆弱性を簡単にチェックしてみたため、その方法をまとめてみます。

1.OWASP ZAPとは?

OWASP(Open Web Application Security Project)が提供している、WEBサイトの脆弱性を診断するためのぺネトレーションテストツールです。オープンソースで、無料で使用できます。

診断可能な脆弱性の代表的な例

  • クロスサイトスクリプティング(反射型)
  • SQLインジェクション
  • CRLF インジェクション
  • パラメータタンパリング
  • パストラバーサル

2.OWASP ZAPのインストール(Windows)

2-1.下記ページ中央の「Download ZAP」より、ダウンロードページに移動します

OWASP Zed Attack Proxy Project
https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project
downloadzap

2-2.Google codeのプロジェクトページよりインストーラをダウンロードします

2013年8月16日時点での最新版はバージョン「2.1.0」です。
Download ZAP 2

2-3.ダウンロードしたインストーラを開き、インストールします

インストールはデフォルトの設定でOKでした。

3.脆弱性の検査

ツールを使った脆弱性検査は自分が管理するサイトに行います。
(他人様のサイトを検査すると攻撃とみなされるかもしれませんので行わないようにしましょう)

今回はIPAが提供する脆弱性体験学習ツール「AppGoat」を用いて脆弱性の検査をしてみます。
「AppGoat」は脆弱性の発見方法、対策について実習形式で体系的に学べるツールです。

下記のIPAのサイトからウェブアプリケーション版のAppGoatをダウンロード・解凍し、「start.bat」より起動します。
http://www.ipa.go.jp/security/vuln/appgoat/

AppgGoatを起動すると下記のような画面が立ち上がります。
AppGoatの起動画面
「ウェブアプリケーション実習環境へ」のリンクをクリックし、注意事項に同意すると脆弱性体験学習ページに移動できます。
AppGoatの実習画面

3-1.XSS(クロスサイトスクリプティング)のチェック

左側のメニューより「アンケートページの改ざん(反射型)」リンクをクリックし、ページを進めるとクロスサイトスクリプティングの演習ページに進みます。
XSSの演習ページ
演習の目的はアンケートページの内容を書き換えることのようですが、OWASP ZAPで脆弱性が存在することの確認のみ実施してみます。

OWASP ZAPを起動し、「Quick Start」タブの「URL to attack:」に演習ページのURLを入力します。
OWASP ZAP XSSチェック
「攻撃」ボタンを押下するとチェックが始まります。チェックが完了し、脆弱性として検知されるものがあった場合、画面下部の「アラート」タブにその内容が出現します。
今回は演習の内容通り、クロスサイトスクリプティングが検知されました。
OWASP ZAPのアラート
項目をクリックすると詳細を見ることができます。今回はURLパラメータ「name」にクロスサイトスクリプティングの脆弱性があったようです。
脆弱性の詳細
検出された内容を実際に演習ページで確認してみると、たしかに任意のスクリプトが実行できるようです。
XSS脆弱性存在の確認

3-2.SQLインジェクションのチェック

SQLインジェクションもAppGoatに演習ページが用意されているため、同様にチェックしてみます。
演習ページの正しいログイン情報はID「yamada」、パスワード「P@ssword」ですが、SQLインジェクションにより不正ログインが可能であることをチェックすることが目的です。
SQLインジェクションの演習ページ
URLパラメータ「password」にSQLインジェクションの脆弱性が見つかりました。
SQLインジェクションの脆弱性
検出された内容を実際に演習ページで確認するため、ユーザIDに「aaaa」パスワードに「ZAP’ OR ‘1’=’1′ –」を入力してみると、確かにログインできてしまいました。
SQLインジェクション成功の確認
SQLインジェクションによるログインの確認

4.まとめ

OWASP ZAPは無料ですが、WEBサイトの様々な脆弱性を手軽にチェックできる素晴らしいツールです。
もちろん「ツールで脆弱性が検出されなければ安全」とは言い切れませんが、一つのチェック手段として使用するのが良いと思います。

他にもOWASP ZAPにはプロキシとして動作させ、リクエストを再現した状態で脆弱性チェックする機能もあるため、機会があればまとめてみたいと思います。

2014/06/03追記 プロキシとして使う場合の方法をまとめました。
関連エントリ:OWASP ZAPをプロキシとして使用し、リクエストを再現して脆弱性チェックする方法