※当ブログではアフィリエイト広告を利用しています。
ひょんなことから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
2-2.Google codeのプロジェクトページよりインストーラをダウンロードします
2013年8月16日時点での最新版はバージョン「2.1.0」です。
2-3.ダウンロードしたインストーラを開き、インストールします
インストールはデフォルトの設定でOKでした。
3.脆弱性の検査
ツールを使った脆弱性検査は自分が管理するサイトに行います。
今回はIPAが提供する脆弱性体験学習ツール「AppGoat」を用いて脆弱性の検査をしてみます。
「AppGoat」は脆弱性の発見方法、対策について実習形式で体系的に学べるツールです。
下記のIPAのサイトからウェブアプリケーション版のAppGoatをダウンロード・解凍し、「start.bat」より起動します。
http://www.ipa.go.jp/security/vuln/appgoat/
AppgGoatを起動すると下記のような画面が立ち上がります。
「ウェブアプリケーション実習環境へ」のリンクをクリックし、注意事項に同意すると脆弱性体験学習ページに移動できます。
3-1.XSS(クロスサイトスクリプティング)のチェック
左側のメニューより「アンケートページの改ざん(反射型)」リンクをクリックし、ページを進めるとクロスサイトスクリプティングの演習ページに進みます。
演習の目的はアンケートページの内容を書き換えることのようですが、OWASP ZAPで脆弱性が存在することの確認のみ実施してみます。
OWASP ZAPを起動し、「Quick Start」タブの「URL to attack:」に演習ページのURLを入力します。
「攻撃」ボタンを押下するとチェックが始まります。チェックが完了し、脆弱性として検知されるものがあった場合、画面下部の「アラート」タブにその内容が出現します。
今回は演習の内容通り、クロスサイトスクリプティングが検知されました。
項目をクリックすると詳細を見ることができます。今回はURLパラメータ「name」にクロスサイトスクリプティングの脆弱性があったようです。
検出された内容を実際に演習ページで確認してみると、たしかに任意のスクリプトが実行できるようです。
3-2.SQLインジェクションのチェック
SQLインジェクションもAppGoatに演習ページが用意されているため、同様にチェックしてみます。
演習ページの正しいログイン情報はID「yamada」、パスワード「P@ssword」ですが、SQLインジェクションにより不正ログインが可能であることをチェックすることが目的です。
URLパラメータ「password」にSQLインジェクションの脆弱性が見つかりました。
検出された内容を実際に演習ページで確認するため、ユーザIDに「aaaa」パスワードに「ZAP’ OR ‘1’=’1′ –」を入力してみると、確かにログインできてしまいました。
4.まとめ
OWASP ZAPは無料ですが、WEBサイトの様々な脆弱性を手軽にチェックできる素晴らしいツールです。
もちろん「ツールで脆弱性が検出されなければ安全」とは言い切れませんが、一つのチェック手段として使用するのが良いと思います。
他にもOWASP ZAPにはプロキシとして動作させ、リクエストを再現した状態で脆弱性チェックする機能もあるため、機会があればまとめてみたいと思います。
2014/06/03追記 プロキシとして使う場合の方法をまとめました。
関連エントリ:OWASP ZAPをプロキシとして使用し、リクエストを再現して脆弱性チェックする方法