OWASP Broken Web Applications Project(BWA)をVagrantで立ち上げる

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

9/30(土)はOWASP World Tour 2017 Tokyoでした。クラスメソッド札幌オフィスでは札幌サテライト会場としてオフィスを提供し、オンライン中継にて学習を行いました。

さて今回、本イベントセッションの中で説明があった、OWASP Broken Web Applications Project(BWA)を、Vagrantを使って簡単にMacで動かしてみたいと思います。

OWASP Broken Web Applications Projectとは

OWASP Broken Web Applications Project(BWA)は、既知の脆弱性を持つ様々なWebアプリケーションが導入された仮想マシンイメージを提供しているものです。自分で脆弱性を作り込んだり、脆弱性を作りこまれたWebアプリケーションを探してこなくても、OWASP BWAを使うことで簡単にWebアプリケーションの既知の脆弱性を体験し学ぶことができます。

やってみた動機

OWASP BWAで提供されている仮想マシンイメージはVMwareフォーマットであるため、Vagrantで動かす為には一工夫が必要です。Mac上のVagrantでOWASP BWAを動かしたかった為にやってみました。

やってみた

Vagrantのバージョンは以下の通りです。

$ vagrant --version
Vagrant 2.0.0

VirtualBoxのバージョンは以下の通り。

$ virtualbox --help
Oracle VM VirtualBox Manager 5.1.28

OWASP BWA仮想マシンイメージのダウンロードと展開

OWASP BWAの公式Webサイトからリンクを辿って、Sourceforgeのリポジトリ から、最新バージョンの7zファイルをダウンロードします。現時点ではOWASP_Broken_Web_Apps_VM_1.2.7zでした。

OWSP BWA

Macで7zipを取り扱う為に、p7zipをHomebrewでインストールします。

$brew install p7zip

7zコマンドでダウンロードしたOWASP BWAの7zファイルを展開します。

$ 7z x -o~/OWASPBWA/ OWASP_Broken_Web_Apps_VM_1.2.7z

7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=utf8,Utf16=on,HugeFiles=on,64 bits,4 CPUs x64)

Scanning the drive for archives:
1 file, 1823676346 bytes (1740 MiB)

Extracting archive: OWASP_Broken_Web_Apps_VM_1.2.7z
--
Path = OWASP_Broken_Web_Apps_VM_1.2.7z
Type = 7z
Physical Size = 1823676346
Headers Size = 421
Method = LZMA:24
Solid = +
Blocks = 4

Everything is Ok

Files: 11
Size:       6320311547
Compressed: 1823676346

OWASP BWA仮想マシンイメージをVirtualBoxに読み込む

OWASP BWA仮想マシンイメージを直接Vagrantで読み込むことはできませんので、一旦VirtualBoxでOWASP BWA仮想マシンイメージをを含んだ仮想マシンを作成します。

VirtualBoxの画面上で、[新規]ボタンをクリックします。

Oracle_VM_VirtualBox_マネージャー

[名前とオペレーションシステム]画面が表示されますので、名前、タイプ、バージョンを適切に設定し、[続ける]ボタンをクリックします。

仮想マシンの作成

[メモリーサイズ]画面は特に変更せず、そのまま[続ける]ボタンをクリックします。

仮想マシンの作成 2

[ハードディスク]画面では、[すでにある仮想ハードディスクファイルを使用する]をチェックします。フォルダマークをクリックします。

仮想マシンの作成 3

先ほどダウンロードしたOWASP BWAで提供されている仮想マシンイメージを選択します。[作成]ボタンをクリックします。

仮想マシンの作成 4

すると以下のように、VirtualBox仮想マシンが作成されます。

Oracle_VM_VirtualBox_マネージャー 3

Vagrant用のSSH設定

この環境だと、vagrant sshで繋がるための設定が仮想マシンイメージに含まれていないために、vagurant upでエラーが出ます。そこでVagrant用のSSHユーザーの設定を行います。

vagrant sshで使われる秘密鍵は通常ローカルMac上の「/Users/"USRNAME"/.vagrant.d/insecure_private_key」です。この秘密鍵から公開鍵を作成します。

$ ssh-keygen -yf /Users/sasakidaisuke/.vagrant.d/insecure_private_key > authorized_keys

次にVirtualBoxからOWASP BWA仮想マシンを起動します。rootユーザーでログインし、以下のようにユーザーを作成します。

# useradd -m vagrant 
# su - vagrant

vagrantユーザーのホームディレクトリにSSH用のディレクトリを作成します。

$ mkdir /home/vagrant/.ssh
$ chmod 0700 /home/vagrant/.ssh/

先ほどMac上で作成したauthorized_keysを、OWASP BWA仮想マシン上の「/home/vagrant/.ssh/authorized_keys」として作成します。

$ vi /home/vagrant/.ssh/authorized_keys
$ chmod 0600 /home/vagrant/.ssh/authorized_keys

更にVagrantユーザーに必要な権限を設定します。まずadminグループに追加します。そしてadminグループがパスワード無しでsudoできるようにします。

# usermod -G admin -a vagrant
# visudo
%admin ALL=(ALL) NOPASSWD:ALL

あとはOWASP WA仮想マシンをシャットダウンします。

VirtualBox仮想マシンをVagrantでパッケージングする

vagrant packageコマンドで、VirtualBox仮想マシンをパッケージングします。

$ vagrant package --base owaspbwa --output owaspbwa.box
==> owaspbwa: Exporting VM...
==> owaspbwa: Compressing package to: /Users/smokeymonkey/OWASPBWA/owaspbwa.box

Vagrantにパッケージングしたboxファイルを登録します。

$ vagrant box add owaspbwa owaspbwa.box
==> box: Box file was not detected as metadata. Adding it directly...
==> box: Adding box 'owaspbwa' (v0) for provider:
    box: Unpacking necessary files from: file:///Users/smokeyonkey/OWASPBWA/owaspbwa.box
==> box: Successfully added box 'owaspbwa' (v0) for 'virtualbox'!

VagrantでOWASP BWA仮想マシンを起動する

さて、やっとここまで来ました。vagrant initコマンドで、owaspbwaというVagrant仮想マシンの為のVagrantfileを作成します。

$ vagrant init owaspbwa
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

仮想マシンのためのネットワーク設定を変更するため、Vagrantfileを修正します。

$ vi Vagrantfile
config.vm.network "forwarded_port", guest: 80, host: 8080

そしてvagrant upします!

$ vagrant up

以下のようにエラーが出ますが、OWASP BWA仮想マシンにVirtualBoxのGuest Additionsがインストールされていないのが原因です。とりあえずフォルダ共有機能を使う予定がないので無視します。

Vagrant was unable to mount VirtualBox shared folders. This is usually
because the filesystem "vboxsf" is not available. This filesystem is
made available via the VirtualBox Guest Additions and kernel module.
Please verify that these guest additions are properly installed in the
guest. This is not a bug in Vagrant and is usually caused by a faulty
Vagrant box. For context, the command attempted was:

WebブラウザからOWASP BWA仮想マシンに接続してみます。すると...接続できました!

owaspbwa_OWASP_Broken_Web_Applications

最後に

本当はNATではなくホストオンリーネットワークで立ち上げたかったのですが、いろいろエラーが出てしまいました。とりあえず完全ローカルなネットワークであれば大きな問題は無いかと思いますが、公開ネットワークでNATで起動するのは危険性が高いため避けてください。

これだけ様々な作業をしてまでVagrantで立ち上げて便利かと言うと悩ましいところです。オフィシャルでVagrant仮想マシンイメージが配布されると嬉しいですね。とりあえずローカル環境でOWASP BWAが起動したので、いろいろと触ってみようと思います。