Web Application Security Memo

ウェブセキュリティに関するメモ書き

OWASP BWA上のMutillidae IIを最新版にする方法

※当サイトにはプロモーションが含まれています。

公開日: 更新日:

Mutillidae II

OWASP BWA (v1.1.1)には脆弱性を持たせたWebアプリケーションが複数入っており、その中の1つに Mutillidae II があります。

このプリインストールされた Mutillidae IIですが、表示されないページがあることに気付きました。修正方法を調査したところ、Mutillidae IIを最新版にすることで解消されることが分かりましたので、その方法について書いておきます。

ページが表示されない原因

表示されないページ

  • [OWASP Top 10]メニューから [A1 - Other Injection] -> [HTML Injection (HTMLi)] -> [Add to your blog] と辿って行くと問題のページにアクセスできます。

Add to your blog

Add to your blog 2

  • 肝心のところに何も表示されていません。

このページの処理を行っているPHPファイル

  • 最初に index.php が読み込まれ、その中から add-to-your-blog.php が読み込まれています。

add-to-your-blog.php 内の処理

  • このファイルの中に以下の行があります。
    • require_once(__ROOT__.’/classes/CSRFTokenHandler.php’);
  • しかし実際には CSRFTokenHandler.php というファイルは存在していません。
  • ページ上に何も表示されないのは、これが原因のようです。

Gitリポジトリで確認する

Mutillidae IIのソースファイルを管理しているGitリポジトリで確認します。

  • OWASP BWA上のMutillidae II は 2013年9月26日にコミットされたものです(Commit[ef7601] =2.6.3.3)。

Current Mutillidae II

  • これに対し、CSRFTokenHandler.php の履歴を見てみると、このファイルは 2013年10月5日に追加されていました(Commit[4905f7] =2.6.3.5)。

つまり、読み込まれるはずのファイルが後から追加されているということなので、OWASP BWAにMutillidae IIを取り込んだ時点で既に問題があったようです。

それでどうするかですが、足らないファイルがあるという問題なので Gitリポジトリから最新版を取り込むことで対応します。そうすればファイルも追加されますし、他にもし問題があったとしても修正されていると思われます。

Mutillidae IIを最新版にする

以下、root ユーザで OWASP BWA にログインして作業します。

1. 準備作業

# Mutillidae IIのディレクトリに移動します。
$ cd /owaspbwa/mutillidae-git/
# この時点でのコミットを確認します。
$ git log -1

git log

# この時点でのファイルの管理状態を確認します。
$ git status

git status

2. 別ブランチを作って、BWA用の変更をコミットする

# BWA用の変更を管理するブランチを作ります。
$ git checkout -b bwa
$ git add .
# captured-data.txt はGit管理外のままにしておきます。
$ git reset captured-data.txt
# コミットするためにユーザ名・メールアドレスを設定します。
$ git config --global user.name "foo"
$ git config --global user.email "foo@example.com"
# コミットします。
$ git commit -m "Add modified files for BWA"
$ git log
# この時のコミットIDをメモしておきます。
# ここでは b12548d801fe7deb8cefd62d40a58e11894eea8e とします。

3. Mutillidae IIを最新の状態にする

# master ブランチに戻ります。
$ git checkout master
# Mutillidae IIを最新の状態にします。
$ git pull

4. BWA用の変更点を反映する

# BWA用の変更を取り込みます。
$ git cherry-pick b12548d80

5. コンフリクトを解消する

$ git status
# set-up-database.php がコンフリクトしていました。
# コンフリクトを修正します。
# (BWAの変更を残します)
$ vi set-up-database.php
# 一旦インデックスに追加します。
$ git add set-up-database.php

6. 元の状態に戻します

# 変更した箇所をインデックスから外します。
$ git reset
# 現時点での状況を確認します。
$ git status
# これで、最初と同じような状態になりました。

git status 2

7. 画面上の [Reset DB] リンクをクリックしてDBを再作成する

DBについて
  • 画面上の [Reset DB] リンクをクリックすると、DBが再作成されます(set-up-database.php が実行されます)。

Reset DB

[最終更新日:2014年3月18日]