MacでOWASP ZAPをインストールして、https(SSL)のサイトを簡易的に脆弱性診断を実施した時のメモ。
■単語メモ
・OWASP オワスプ -> Open Web Application Security Project
・ZAP ザップ -> The Zed Attack Proxy
■環境
・MacBook Pro - macOS Sierra ver10.12.6
・ZAP 2.6.0
■インストールと起動
1.Macでアクセスしてそのままインストール
OWASP Zed Attack Proxy Project
2.起動後にJavaエラーが出てJavaか何かを更新した気がする(だいぶ前にやったので忘れた)
3.改めて起動
4.タブ「クイックスタート」をクリックし、https付きで診断したいURLを入力
5.次にBasic認証を突破するためのjsスクリプトを登録する。左上の「サイト」の右にある「+」をクリックして「スクリプト」をクリック。するとスクリプト関連が表示される。
6.左上のfaviconぐらい小さく3つ並んでいるアイコンの一番右側の紙と+が合体しているマークをクリック。マウスオーバーすると「新しいスクリプト」と表示されるやつです。
7.新規スクリプト画面で以下を選択する。
8.右上の空白の入力画面(実行ボタンの真下)に以下のコードを入力する。
-----------------------------------------------------------------------------------------
org.parosproxy.paros.network.HttpSender.addListener(
new org.zaproxy.zap.network.HttpSenderListener {
getListenerOrder: function() {
return 1;
},
onHttpRequestSend: function(msg, initiator) {
msg.getRequestHeader().setHeader(
// 第一引数は「Authorization」で、第二引数は「Basic 」と「ユーザー名:パスワード」をBase64でエンコードした文字列
"Authorization", "Basic ZHJwaGxxxxxxBob3Rv"
);
},
onHttpResponseReceive: function(msg, initiator) {
}
});
-----------------------------------------------------------------------------------------
コメント部分以外は以下サイトからコードを引用しています。
引用元:OWASP ZAPでBASIC認証を突破する
【注意】"Authorization", "Basic ZHJwaGxxxxxxBob3Rv"の「Basic 」の後の文字列は、「ユーザー名:パスワード」をBase64でエンコードした文字列を入れる必要があります。
エンコードは以下サイトで変換できます。
Encode to Base64 format
例えば、ユーザー名が「yamada」で、パスワードが「himitsu」だった場合は、「yamada:himitsu」を上記サイトに入力してエンコードしてください。
(jsでBase64エンコードするコードも少し書いたのですが、いまいち上手くいかず、結局Base64エンコードした文字列を直接入力した方が早かったです)
9.「実行」ボタンを押す。「実行」を押しても特に反応はないですが、ちゃんと反映されます。なお、コードがミスったりしていると下にあるウィンドウにエラー内容が表示されます。
10.「クイックスタート」タブに戻って「攻撃」ボタンを押すと診断開始。
なお、 Basic認証の通過に失敗していると、URL入力欄の下に401エラーが表示されます。
■参考にしたサイト
# 本当に助かりました。ありがとうございます。
・OWASP ZAP で送信されるリクエストに自動で独自ヘッダを追加する方法
・OWASP ZAPでBASIC認証を突破する
・ブラウザを通して診断する場合 → Mac版のOWASP ZAPで脆弱性チェックの設定
・StackOverflow - How to assign basic authentication header to XMLHTTPREQUEST?
req.setRequestHeader('Authorization','Basic ' + Base64StringOfUserColonPassword);
↑「Basic認証できない」の回答が上記
■(参考)診断の所要時間
以下、ZAPをデフォルト設定で診断した場合の所要時間
・Rails5で、Scaffoldで作った直後のアプリ(データのCRUDができる程度、6画面、そのほか少しカスタマイズした程度)を診断 → 約1時間かかった
・全て静的ファイル(HTML, js, CSS, 画像のみ、50画面、サーバーサイドで実行するスクリプトは一切なし) → 約5分
■(参考)ZAPの全般的な操作方法
IPAから、以下マニュアルのP.21「検査ツール実行及び検査結果」に画面付きで丁寧に操作説明が書かれています。それ以外にも診断ツールの比較やどのフェーズで診断すべきか、何が診断できるのか、も含めてわかりやすく説明されています。 # さすがIPA
IPA テクニカルウォッチ 「ウェブサイトにおける脆弱性検査手法」(ウェブアプリケーション検査編)」
※PDFが開きます