Webアプリハッキング学習、DVWAのセットアップ方法【Kali 2020.1】

## 事の背景
会社の後輩に「SQLインジェクションのイメージが沸かない」と相談をされましたので、実際にWebアプリケーションへハッキング攻撃できる学習用アプリケーション「DVWA」を構築し、実演しようとなりました。
今回はKali LinuxにDVWAを構築するまでの手順を紹介します。
なお、本手順はIPUAIRON様の[ハッキング・ラボのつくりかた](https://www.amazon.co.jp/dp/4798155306) を参考に進めております。興味のある方は、是非読んでみてください。

## 0.今回の環境
構築した環境条件は以下となります。

* VirtualBox v6.1.2(r135662)
* Kali Linux 2020.1
* ブラウザ：Firefox
* Kali内での特殊な設定：私の環境では**sudoコマンド実行時、パスワードを聞かれないよう設定を変更しております。**
    * そのため、sudoコマンド実行時の画像等でパスワードを聞いてくるような文言がありません。デフォルト設定ではパスワードを要求されますので、自身の環境との差分にご注意ください。


## 1. DVWAのインストール
* KaliでDVWAのサイトへアクセスし、ページ下部の「Download」から"DVWA-master.zip"をダウンロードします。

> DVWA-Damn Vulnerable Web Application
> URL：http://www.dvwa.co.uk/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/462467/e8c10c61-92ac-6a25-9260-92b18ceb3fbc.png)

* ダウンロードしたファイルを"/root"配下にコピー(/移動)させます。ただし、/rootは一般権限では操作できないため、一度root権限へ昇格します。

```
$ sudo su
※パスワードを聞かれます。デフォルトであれば、"kali"
```

* root権限となったら、DVWA-master.zipをrootフォルダへコピーします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/462467/5da4b303-7d5e-b571-2e1c-939665275c67.png)
↑一般権限では、「Permission denied」となるが、root権限後は問題なくrootフォルダへ配置できる。

* rootフォルダへ移動し、unzipコマンドで解凍します。

```
# cd /root
# unzip DVWA-master.zip
```

* 解凍したmasterを/var/www/html/配下へ移動します。その後、権限を変更します。

```
# cp -Rv DVWA-master /var/www/html
# chmod -Rv 777 /var/www/html/DVWA-master
```

* DVWA-master/configフォルダ配下にあるconfigファイル名を以下のように修正します。

```
# cd /var/www/html/DVWA-master/config
# mv config.inc.php.dist config.inc.php
```

## 2. サーバーの起動とDVWAへのアクセス

* ApacheとMySQLを起動します。

```
# service apache2 start
# service mysql start
```

* KaliでFirefoxを起動し、以下のURLを入力しアクセスする。apacheとmysqlが正常に起動していれば、以下のような"setup.php"の画面に自動遷移するはずです。
    * 入力URL：ｈttp://localhost/DVWA-master/login.php
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/462467/f5bacc08-0d7c-fc50-1545-3561a564e183.png)

## 3. MySQLへアカウント登録

* MySQLに接続し、DB接続用のアカウントを登録します。

```
# mysql -u root -p
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/462467/3c5a5257-210a-80ed-5e5e-f0f381990528.png)

* データベースが選択されていないため、mysqlを明示します。

```
# use mysql
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/462467/776f9b7b-3aac-f07c-d43c-ad5250623490.png)

* ユーザーを作成します。

```
> GRANT ALL PRIVILEGES ON *.* TO '[ユーザー名]'@'localhost' IDENTIFIED BY '[パスワード]';
※[ユーザー名]と[パスワード]は任意
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/462467/e179e6a0-be2f-9dd3-065b-09a9296893a2.png)
今回はkali/kaliで作成。正常に作成されると、「Query OK, ~」と表示されます。

* "Ctr+c"でSQL編集モードを終了し、その後mysqlをリスタートさせます。

```
# service mysql restert
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/462467/bb41caa8-0357-ab91-6689-78189a367048.png)

## 4. configファイルの修正

* 先程のconfigファイルを開き、[ 'db_user' ]と[ 'db_passowrd' ]を先程設定したユーザー名とパスワードに変更します。
    * エディタは何でもいいですが、私はviが苦手なのでnanoエディタで開きました。

```
# nano /var/www/html/DVWA-master/config/config.inc.php
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/462467/21f9019c-b4db-c569-2b39-aac73606915d.png)
↑修正前

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/462467/b9011567-538a-1122-4a88-58fb3a768306.png)
↑修正後

## 5. DVWAのデータベース作成とログイン確認
* 「Database setup」画面(ｈttp://localhost/DVWA-master/setup.php )の一番下にある、「Create/Reset Database」ボタンを押下します。ボタンの下に、以下のようなメッセージが出ればデータベースの作成は完了です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/462467/521b0470-c434-43ee-df0f-9dbdbedbdd7c.png)

* ログインページ(ｈttp://localhost/DVWA-master/login.php) にアクセスします。正常にできていれば、ユーザー名とパスワードを入力する画面となっているはずです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/462467/58b726d2-fba4-5e95-74e7-32d73dcf1a98.png)

* Usernameに"admin"、Passwordに"password"と入力してログインします。「Welcome to Damn Vulnerable Web Application!」と書かれたページが表示されればDVWAの構築は完了です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/462467/8488cd80-92b8-246f-4ec0-967087328a66.png)

## 6. 次回以降のログインの場合。

* うっかり忘れがちですが、本アプリケーションはapacheとmysqlが動いていないと起動できません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/462467/e58cafe4-2529-df6c-4c57-bc97a207359a.png)

次回以降、続きをする場合はまずapacheとmysqlを起動してからアクセスしてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/462467/762abf4d-3fec-189b-557e-60074839ce3b.png)

以上となります。