2015年 12月 02日
「体系的に学ぶ 安全なWebアプリケーションの作り方」(通称徳丸本)はWebアプリケーションの脆弱性や攻撃技法とその対策についての定番中の定番と言える書籍です。
書籍には付録としてVMWareのディスクイメージを収録したCD-ROMが付属し、仮想環境で脆弱性を試すことができます。
また、電子版ではディスクイメージのダウンロードURLが記載されています。
Webアプリケーション開発にMacを使っていて、VMWareではなくVirtualBoxやVagrantを使っている人も多いのではないでしょうか?
ここではOS XでVagrantを使って通称徳丸本の仮想環境を動かす方法を解説します。
(以前[Gistに書いたもの](https://gist.github.com/eyasuyuki/4975a91abc3e2b140f0a 「体系的に学ぶ 安全なWebアプリケーションの作り方」の仮想環境をVagrantで動かす)に説明を加えてブログ記事にしました)
VagrantやVirtualBoxがインストールされていない場合はインストールしておいてください。
homebrewをお使いならインストール方法は以下の通りです。
brew tap caskroom/cask
brew tap caskroom/versions
brew install brew-cask
brew cask install virtualbox
brew install vagrant
実習環境の仮想ディスクイメージを準備しましょう。
書籍版は付録CD-ROMからコピーしてください。
電子書籍版は2ページに書かれているURLからダウンロードしてください。
入手した仮想ディスクイメージやサンプルコードを展開しましょう。
電子書籍版の.zipフィルのパスワードは、ダウンロードURLと同じく電子書籍版の2ページに書かれています。
unzip WASBOOK.zip
OS Xのターミナルから以下を実行してVMWareイメージをVirtualBoxイメージに変換します。
cd WASBOOK
Vboxmanage clonehd --format VDI wasbook.vmdk wasbook.vdi
wasbook.vdiが生成されます。
参考文献) http://dackdive.hateblo.jp/entry/2014/01/14/012255
wasbook.vdiをもとに、VirtualBoxにVMを追加し、起動するように設定してみましょう。
OS Xのターミナルから以下を実行します。
VBoxManage createvm --name WASBOOK --register
VBoxManage modifyvm WASBOOK --memory 1024 --acpi on --nic1 nat
VBoxManage modifyvm WASBOOK --ostype Linux_64
VBoxManage storagectl WASBOOK --name "IDE Controller" --add ide
VBoxManage modifyvm WASBOOK --hda wasbook.vdi
参考文献) http://blog.livedoor.jp/sonots/archives/41996329.html
VirtualBoxに”WASBOOK”という名前でVMが追加されましたが、
このまま起動してもeth0が識別されません。
この現象を回避するにはVirtualBoxからVMを起動し、root権限で以下を実行してください。
rootユーザーのログインパスワードは通称徳丸本の本文中に書かれています。
rootユーザーとしてログインしたら、以下のコマンドを実行してください。
ln -s -f /dev/null /etc/udev/rules.d/70-persistent-net.rules
仮想環境をVirtualBoxからシャットダウンして再起動するとeth0が識別されるようになります。
参考文献) http://qiita.com/tarr1124/items/8276e609c0f7cdec79e7
VMをVagrantで使えるようにするための設定を行います。
引き続きVirtualBox上のrootユーザー権限で以下のコマンドを実行します。
adduser vagrant
passwd vagrant # パスワードもvagrant
visudo # vagrant ALL=(ALL) NOPASSWD:ALL を追加
参考文献) http://blog.livedoor.jp/sonots/archives/41996329.html
vagrant sshコマンドで仮想環境にログインできるようにするために、仮想環境のvagrantユーザー配下にvagrantの公開鍵を登録します。
引き続きVirtualBox環境のroot権限で以下のコマンドを実行してください。
apt-get install curl
sudo su - vagrant
mkdir .ssh
curl https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub > .ssh/authorized_keys
chmod 0755 .ssh
chmod 0644 .ssh/authorized_keys
参考文献) http://blog.livedoor.jp/sonots/archives/41996329.html
ここまで設定を終えたら、VirtualBoxから”WASBOOK”仮想環境をシャットダウンしてください。
Vagrantにboxを登録するために、OS X側に戻って以下のコマンドを実行してください。
vagrant package --base WASBOOK --output WASBOOK.box
vagrant box add WASBOOK WASBOOK.box
vagrant init WASBOOK # Vagrantfile ができる。
vagrant up
参考文献) http://blog.livedoor.jp/sonots/archives/41996329.html
Vagrant boxが起動したでしょうか?
このままだとHTTP経由で仮想環境に接続できないので、プライベートネットワークを有効にして仮想環境にIPアドレスを付与します。
OS XでVagrantfileを編集してプライベートネットワークを有効にします。
vi Vagrantfile
以下の行の行頭の#を削除し、コメントを解除します。
config.vm.network "private_network", ip: "192.168.33.10"
Vagrantfileの編集が終わったらVMを再起動して変更を反映しましょう。
vagrant reload
pingコマンドで疎通を確認してみましょう。
ping 192.168.33.10
通称徳丸本の仮想環境にアクセスするためのホスト名を/etc/hostsファイルに追加しましょう。
OS X環境のroot権限で/etc/hostsファイルに以下を追加します。
192.168.33.10 example.jp trap.example.com
ブラウザで通称徳丸本の仮想環境にアクセスしてみましょう。
http://example.jp/
通称徳丸本ではWindows環境でFiddlerを使ってリクエスト/レスポンスをダンプしたり、hidden要素の内容を書き換えてPOSTしたりしています。
OS X環境では、FiddlerがなくてもFirefoxの開発者コンソールを使えばこれらが可能になります。