セキュリティと聞くと、堅苦しいイメージを持っていませんか?
そのため、なかなか学ぼうというモチベーションが湧づらいです。
どちらかと言うと、仕方がないからという義務感で学ぶことになります。
簡単に言うと、セキュリティは楽しくないのですよね。
どうしても、守るという行為はワクワクはしません。
逆に、攻めるという行為はワクワクしますよね。
だったら、セキュリティも攻めることで学べばいいと思いませんか?
もちろん、あなたとは無関係のサイトを攻撃したら、犯罪になりかねません。
かと言って、そのためにサイトを自作するのも手間がかかります。
そのような時には、DVWAを使いましょう。
本記事の内容
- DVWAとは?
- DVWAのシステム要件
- DVWA用のデータベース作成
- DVWAのインストール
- DVWAの動作確認
それでは、上記に沿って解説していきます。
DVWAとは?
DVWAとは、Damn Vulnerable Web Applicationの略称です。
日本語にすると「忌々しい脆弱なウェブアプリケーション」でしょうか。
実際、 DVWAは非常に脆弱なPHP/MySQLのWebアプリケーションになります。
なかなか、こういう紹介はありません。
通常なら、堅牢なセキュリティとか言いますけどね。
では、なぜ脆弱なアプリケーションが堂々と公開されているのか?
それは、DVWAに攻撃を加えることでセキュリティに関して学ぶためです。
攻撃を知るからこそ、その攻撃に対する防御にも精通できます。
そのためにDVWAが用意されているのです。
上記より、DVWAは極めて危険なモノです。
だから、DVWAは決して公開された環境では利用しないでください。
そのことは、公式にも書いてあります。
社内・家庭内と言った、閉じたネットワーク環境での利用が必須と言えます。
また、仮想マシン上にDVWAをインストールすることが推奨されています。
以上、DVWAに関しての内容とその目的を説明してきました。
次に、DVWAのシステム要件を確認します。
DVWAのシステム要件
今回利用するDVWAのバージョンは、1.3になります。
このバージョンは、2010年10月27日に公開されています。
かなり古いですね。
正直、最近の環境で動くのかどうか心配になるレベルです。
でも、脆弱性という面ではさらにレベルアップしているかもしれません。
最新版DVWAをUbuntuでインストールする方法は、次の記事でまとめています。
そのようなDVWAのシステム要件は、以下となります。
- Webサーバー
- PHP
- MySQL
PHPが動けば、Webサーバーは何でもOKに見えます。
でも、普通にApacheを利用しましょう。
今回は、ロカールPC(Windows)にDVWAをインストールします。
それであれば、XAMPPを利用しましょう。
ローカルPCで動かすなら、基本的に危険なことはありません。
XAMPP
https://www.apachefriends.org/jp/index.html
XAMPPのインストールは、簡単過ぎて説明不要なレベルです。
最低限でApacheとMySQL(MariaDB)をインストールします。
Apache(Webサーバー)やMySQLに関しては、特に懸念はありません。
ただ、PHPに関しては大丈夫なのかと不安を抱くレベルです。
DVWAが作成された当時は、PHP 5の時代です。
そして、今はPHP 8がXAMPPではインストールされます。
次は、インストールの事前準備としてデータベースを作成します。
DVWA用のデータベース作成
DVWA用のデータベース作成します。
インストール(セットアップ)する前に、データベースを作成しておく必要があります。
これは、WordPressのインストールと同じ流れです。
このような流れのセットアップは、結構多いように感じます。
では、実際に作業に入っていきます。
DVWAの設定は、以下がデフォルトになります。
$_DVWA[ 'db_user' ] = 'dvwa'; $_DVWA[ 'db_password' ] = 'p@ssw0rd'; $_DVWA[ 'db_database' ] = 'dvwa';
今回は、この条件でデータベースを作成しましょう。
こんな豪快(危険)なことをできるのは、DVWAは閉じた環境で利用するからです。
一般に公開された環境では、デフォルト(公開された)情報でデータベースを作成してはいけません。
まずは、MySQLにアクセスします。
# mysql -u root -p
公式の手順通りに行います。
MariaDB [(none)]> create database dvwa; Query OK, 1 row affected (0.004 sec) MariaDB [(none)]> create user dvwa@localhost identified by 'p@ssw0rd'; Query OK, 0 rows affected (0.005 sec) MariaDB [(none)]> grant all on dvwa.* to dvwa@localhost; Query OK, 0 rows affected (0.006 sec) MariaDB [(none)]> flush privileges; Query OK, 0 rows affected (0.000 sec)
データベースが作成できたかどうか確認しておきます。
MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | dvwa | | information_schema | | mysql | | performance_schema | | phpmyadmin | | test | +--------------------+ 6 rows in set (0.000 sec)
ユーザーに関しては、作成したユーザーでログインできればOKです。
ここまで確認できれば、問題ありません。
では、DVWAのインストールを行っていきましょう。
DVWAのインストール
DVWAのインストールは、次の流れで行います。
- DVWAのダウンロード
- DVWAのセットアップ
それぞれを下記で説明します。
DVWAのダウンロード
GitHub上のDVWAページ
https://github.com/digininja/DVWA
上記ページへアクセス。
ページの中頃に以下のダウンロードリンクがあります。

Windows環境であるので、zipをダウンロードします。
ダウンロードが完了すると、DVWA-master.zipが保存されます。
それを解凍すると、DVWA-masterフォルダが出来上がります。
そのフォルダ名を、「dvwa」に変更します。
そして、その「dvwa」フォルダをApacheのDocumentRootに移動させます。
私の環境では、以下のようになります。
C:\xampp\htdocs\dvwa
DVWAのセットアップ
セットアップを始める前に、ApacheとMySQLを起動しておきます。
次の状態にしておくということです。

それぞれの起動を確認できたら、セットアップにアクセスします。
http://localhost/dvwa/setup.php
そうすると、以下のような表示が確認できるはずです。
DVWA System error - config file not found. Copy config/config.inc.php.dist to config/config.inc.php and configure to your environment.
DVWAの設定ファイルが存在しないというエラーです。
指示通り、config.inc.phpを設置しましょう。
単純にファイル名を変更するだけです。
config.inc.php.dist → config.inc.php
ファイル名を変更できたら、再度セットアップ画面にアクセス。
先ほどのエラーではなく、以下のような項目が表示されます。

何個か赤字のところがあります。
「allow_url_include」に関しては、PHP 7.4.0以降は非推奨です。
そして、PHP 8では削除されています。
PHP 8では、どうしようもないので諦めましょう。
それだけ危険だからこそ、削除となったのでしょう。
このことより、 ファイルインクルードの検証は不可ということを覚えておきましょう。
そもそも、SQLインジェクション対策の検証が目的ですからね。
あとは、reCAPTCHAに関することです。
reCAPTCHAは、必要になったときに対策しましょう。
よって、「gd」も無視できます。
以上より、セットアップを進めても問題なさそうです。
問題ないと判断したら、画面下部にある以下のボタンをクリック。

少しすると、以下のログイン画面に遷移します。
とりあえず、DVWAのインストールに関してはここまで。
次は、DVWAの動作確認を行います。
DVWAの動作確認
ログイン画面は、以下です。

デフォルトのログイン情報は、以下。

これは、ブルートフォースアタックをやりやすいように設定しているらしいです。
ログインしてみましょう。
ログインは普通にできました。
Chromeの場合、以下のような警告ダイアログがモーダル表示されます。
(※こんなダイアログは初めて見ました)

詳細(i)を確認すると、次のような内容です。

Chromeのセキュリティ意識は高いですね。
ログインまでできたら、DVWAの動作確認はOKです。
そして、ここから脆弱性の検証をやろうと思えば可能です。
ただ、それではDVWAは輝きません。
DVWAは攻撃されてナンボです。
実際の攻撃に近い形で、プログラムやツールを使ってDVWAを攻撃しましょう。
そのような攻撃用のツールなどが、ちゃんと公開されています。
今後、攻撃用ツール・プログラムを用いて、DVWAを攻撃していく予定です。