Linux
セキュリティ
zap
脆弱性診断

[Linux] OWASP ZAP + OWASP-BWAでWEB脆弱性診断を学ぶ

とある勉強会に触発されて書くことにした。
セキュリティ診断ツールOWASP ZAPを用いて仮想マシンOWASP BWAに詰め込まれた脆弱なWEBアプリケーションを診断する。

OWASP ZAPとは

ZAP = Zed Attack Proxy
オープンソースのWEBセキュリティ診断ツール。プロキシとして動作し、ブラウザとwebアプリケーション間の通信の閲覧や改変を可能にする。

OWASP BWAとは

BWA = Broken Web Applications
故意に脆弱性だらけにされてあるWEBアプリケーションを複数詰め込んだ仮想マシン。

必要なもの

環境の構築

BWAを解凍する

7z x -o OWASP_BWA OWASP_Broken_Web_Apps_VM_1.2.7

イメージファイルをVirtual Boxで読みこむ

[新規]を選択
範囲を選択_014.jpg

名前はowasp-bwa、タイプはLinux、バージョンはUbuntuにする。

範囲を選択_002.jpg
メモリーサイズはデフォルトでOK。

範囲を選択_003.jpg
"すでにある仮想ハードディスクファイルを使用する"にチェックを入れ、"OWASP Broken Web Apps-cl1.vmdk"を選択する。

仮想マシンの設定

インポートが完了したのでここからは仮想マシンを設定する。


設定-->ネットワーク
範囲を選択_004.jpg
割り当てをNATからホストオンリーアダプタに変更して、OKをクリック。

ZAP

JDKのインストール

ZAPの2.7系を動かすためにはJava 8以上が必要になるので最新版のJDK(rpm)を前述したリンクからダウンロードし、rpmコマンドでインストールする。
sudo rpm -ivh jdk-10.0.1_linux-x64_bin.rpm

OWASP ZAP ダウンロード

JDKと同様に、前述したリンクから"Linux Package"をダウンロードし、解凍する。
tar xvfz ZAP_2.7.0_LInux.tar.gz
ZAPは解凍したファイルの中にあるzap.shを呼び出すことで起動できる。

簡単なテスト

必要な物が揃ったので、簡単なテストをしてみよう。

BWAを起動

Virtual BoxからBWAを起動する。
すると、画面上に仮想マシンのIPアドレスが表示される。
範囲を選択_001.jpg


ブラウザでアクセスしてみる。
範囲を選択_002.jpg
脆弱性のあるアプリケーション一覧が表示される。

ブラウザの設定[Firefox]

設定-->一般-->ネットワークプロキシ-->接続設定
範囲を選択_003.jpg
"手動でプロキシを設定する"にチェックを入れ、アドレスは127.0.0.1、ポートは57777に設定する。

ZAPを起動

/ZAP_2.7.0
sh zap.sh

もしくは

/ZAP_2.7.0
./zap.sh

ZAPの設定

対象外のサイトへの攻撃を防ぐために画面左上のバーはプロテクトモードに設定しておく。
範囲を選択_004.jpg


オプション(画面左上の歯車マーク)-->ローカルプロキシ
範囲を選択_005.jpg
ブラウザと同じようにアドレスは127.0.0.1、ポートは57777に設定する。

SQLインジェクション

BWAで"Damn Vulnerable Web Application"を選択。UsernameとPasswordはどちらともadmin。
範囲を選択_001.jpg


"SQL Injection"を選択。
範囲を選択_013.jpg



ZAPに戻り、192.168.56.101/dvwa/vulnerabilities/GET:sqliを右クリック-->"コンテキストに含める"-->"New context"-->OK。
すると、対象となるページにターゲットマークが表示される。
範囲を選択_004.jpg


ブラウザに戻り、User IDに適当な値を入力してsubmit。
範囲を選択_005.jpg


またZAPに戻って履歴をみると、このリクエストが反映されている。
範囲を選択_006.jpg
範囲を選択_007.jpg


履歴にあるSubmitリクエストを右クリック-->攻撃-->動的スキャン-->スキャン開始。
範囲を選択_008.jpg


スキャンが開始される。
範囲を選択_009.jpg


+アイコン-->アラートで、スキャンから得た脅威となりうる脆弱性を確認することができる。
範囲を選択_011.jpg

終わり

以上、OWASP ZAP + OWASP-BWAを用いた脆弱性診断の学習でした。所々適当になってしまった部分もあるので、分からない所や、ここはおかしいのではないと思う部分があればコメントにてご教授頂けると助かります。