DVWA(Damn Vulnerable Web Application)は、意図的に脆弱性を持たせたWebアプリケーションです。
早く言うとDVWAをインストールすると “ヤラれ役サーバ” が構築出来るので、これをターゲットとした各種ペンテストの演習が出来ます。
長編の投稿になりますので、今回はDVMWのインストールまでを報告します。
サーバ構築のアウトライン
まず2台のRaspberry piを用意し、ラズパイ5(左)は攻撃用、ラズパイ4B(右)を守備用(やられサーバ)を担当させます。(いずれもOSはkali linuxです)

ちなみにこの2台のマシンは、ディスプレイ1台とマウス・キーボード1組のみで操作しています。
ディスプレイとマウス・キーボードは左のラズパイ5にのみ接続しています。
右のラズパイ4Bには何も繋がず、ラズパイ5からのSSH接続を通じて操作しています。
例えば上図のように1画面の中に、左にラズパイ5のターミナル、右にSSH接続したラズパイ4Bのターミナルを並べておくと同時に操作できます。
なお、ラズパイ4Bの方には既に、
1) “apache2(webサイトを閲覧させるソフト)” が導入済みであり(詳細はapache導入記事)
2) “wordpress” (サイトのコンテンツ管理ソフト)と “MariaDB” (サイトのコンテンツを格納するデータベースソフト)が搭載稼働済みです(詳細はwordpress導入記事)
今回はこの状態から出発して、さらに脆弱webアプリである “dvwa” を搭載・稼働します。
dvwaはwordpressに並列で配置し、データベースソフトはMariaDBを流用しますが、データベース本体は別に新たに作成します。
< 現在の構成 >
Kali Linux
L apach2, PHP
L Wordpress ー MariaDB(wordpress用DB)
< 予定する構成 >
kali Linux
L apach2, PHP
L Wordpress ー MariaDB(wordpress用DB)
L dvwa ー MariaDB(dvwa用DB)
dvwa導入後のサイトのページ構成:
/ ➡️ wordpressのサイト
/DVWA/ ➡️dvwaのサイト
(トップ下のDVWAディレクトリの下にdvwaサイトを置きます)
現在の環境の確認
まずは現在の関係各種ソフトのバージョンを確認しておきます。
バージョン情報の確認
搭載している ‘apache’, ‘php’, ‘mysql’, ‘mariadb’ のバージョン情報の確認です。
apache2 -v
php -v
mysql –versioon
mariadb –version

| ソフト | バージョン |
|---|---|
| apache2 | 2.4.68 |
| php | 8.4.24 |
| mysql | 11.8.8 (互換のmariadbとして) |
| mariadb | 11.8.8 |
phpのモジュール確認
phpのモジュール一覧を表示します。
php -m

*DVWAの稼働には、モジュールとして上記以外に ‘gd’ 不足しています。
(https://github.com/digininja/DVWA/blob/master/setup.php の135行目)
後ほどインストールします。
php-gdモジュールの確認
念の為 ‘gd’ の不存在の確認と、その名称の確認です。
php -m | grep -I ‘^gd$’
apt policy php8.4-gd

php-gd:PHPの画像編集ライブラリ
webページ構造とその所有者の確認
現時点(wordpressのみ)のサイト構造と、その所有者の確認
ls -l /var/www/html

wordpressは、所有者が “www-data” 、所有グループが “www-data” となっています。
apacheの確認
apacheの状態として下記を順に確認します。
- apacheのvirtual hostの状態確認
- apacheのモジュール(’php’, ‘rewite’ )の存在確認
- DocumentRootの確認
- apacheの稼働状態の確認
sudo apachectl -S
sudo apachectl -M | grep -E ‘php|rewrite’
grep -R “DocumentRoot” /etc/apache2/sites-enabled/
systemctl status apache2 –no-pager

apacheのvirtual hostの状態
*:80
│
├─ default server 127.0.0.1
│ └─ /var/www/html
│
└─ wordpress vhost
ServerName 192.168.11.21
DocumentRoot /var/www/html/wordpress
Document Rootとは、Webサーバー上でWebサイトの公開データ(HTMLや画像など)を格納する最上位のディレクトリ(フォルダ)のことです。 ユーザーがブラウザでURLにアクセスした際、Webサーバーはこのドキュメントルートを起点としてファイルを探し出し、画面に表示させます。
mariadbの確認
mariadbの稼働状態と、mariadbのデータベース状態の確認
systemctl status mariadb –no-pager
sudo mariadb -e “SHOW DATABASES;”

データベース中に “wordpress” という名のデータベースを確認出来ます。
wordpressの確認
wordpressサイトのコンテンツ情報と、DBの設定情報取得
ls -la /var/www/html/wordpress/
sudo grep -E “DB_NAME|DB_USER|DB_HOST” /var/www/html/wordpress/wp-config.php

確認出来る情報
| データベース名 | DB_NAME | wordpress |
| ユーザ名 | DB_USER | wpuser |
| ホスト名 | DB_HOST | localhost |
apache上のphp稼働の確認
Apache経由でもphp稼働を確認し、curlでアクセスして確認しておきます。
sudo apachectl -M | grep php
curl -I http://127.0.0.1/

phpモジュールは稼働しており、アクセスも正常(200 OK)に出来ています。
これまで繰り返し出ている、”AH00558: apache2: Could not reliably determine the server’s
fully qualified domain name, using 127.0.1.1“の警告は「ServerNameが明確に設定されていないので127.0.1.1を使う」とのApacheの警告です。放置して構いません。
wordpressのvirtual host設定確認
現在のwordpressのvirtual hostの設定の確認
sudo cat /etc/apache2/sites-enabled/wordpress.conf

将来この設定ファイルに、DVWAへ分岐用のエイリアスを書き加えます。
DVWAインストール
準備
準備として、phpのモジュールの中で不足している “php-gd” をインストールします。
sudo apt update
sudo apt install php8.4-gd

gdの存在確認
php -m | grep -I ‘^gd$’

apache再起動
インストールした ‘gd’ をapache2に反映させる為、再起動します。
sudo systemctl restart apache2

apache稼働の確認
systemctl status apache2 –no-pager
DVWAインストール
DVWAは、”apt install” ではなく、”git” から “clone” して持ってきます。
まずは “git” が入っているかどうかの確認
git –version

入っているとの結果です。
インストール先のディレクトリへ移動して、githubからcloneしてきます。
cd /var/www/html
sudo git clone https://github.com/dijininja/DVWA.git

インストール内容の確認
ls -la /var/www/html/DVWA

まとめ
脆弱サーバ “DVWA” のインストールまでを取り上げました。
既に稼働しているwordpressのサーバに、どうやってDVWAを置くのかが全く見当もつかず、chatGPTに一々聞きながらの設定です。
最初に延々と自分の環境を聞かれましたが、そのおかげでchatGPT先生、今回はほとんど嘘をつかずに教えてくれました。
但し、繰り返し部分が多く口説い印象でした。
節目節目でchatGPTにスクショをアップしていたのですが、ファイルのアップは1スレッド24時間あたり4回の制限があることが分かりました。(それ以上の回数は有料コースとなります)
但し、24時間を超えると、またアップが可能になります。
次回は設定編です。
<PR>

コメント