<link href='https://www.blogger.com/dyn-css/authorization.css?targetBlogID=8350550267501384884&amp;zx=98b9b73f-9c50-4f61-9e52-ff87303bee83' rel='stylesheet'/>
  1. 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が開きます


About Me
About Me
自分の写真
プログラミングでよくハマる部分を自分用に書いていますが、もし少しでもお役に立てたらうれしいです。
ラベル
Blog Archive
運営サイト
読み込んでいます