Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
DVWA — 意図的に脆弱性を持たせたPHP/MariaDBウェブアプリケーション。合法的で管理された環境で、複数の難易度レベルにわたる一般的なWebセキュリティ脆弱性の練習ができます。 | Kitploit
ツール/GitHubGitHub/digininja/dvwa
脆弱性分析ウェブセキュリティペネトレーションテスト学習と教育ラボと実践
GitHubdigininja/dvwa

DVWA

意図的に脆弱性を持たせたPHP/MariaDBウェブアプリケーション。合法的で管理された環境で、複数の難易度レベルにわたる一般的なWebセキュリティ脆弱性の練習ができます。

リポジトリを見る
13.5k5.0k14時間13分前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

DAMN VULNERABLE WEB APPLICATION(脆弱極まりないWebアプリケーション)

Damn Vulnerable Web Application(DVWA)は、非常に脆弱なPHP/MariaDBベースのWebアプリケーションです。その主な目的は、セキュリティ専門家が合法的な環境でスキルやツールをテストし、Web開発者がWebアプリケーションのセキュリティ確保プロセスをより深く理解し、学生や教師が制御された教室環境でWebアプリケーションセキュリティを学ぶための支援を提供することです。

DVWAの目標は、さまざまな難易度レベルで、最も一般的なWeb脆弱性のいくつかを、シンプルで直感的なインターフェースを通じて実践することです。 なお、このソフトウェアには文書化された脆弱性と文書化されていない脆弱性の両方が存在することに注意してください。これは意図的なものです。できるだけ多くの問題を発見するよう挑戦することを推奨します。


警告!

Damn Vulnerable Web Applicationは非常に脆弱です!プロバイダの公開htmlフォルダやインターネットに公開されたサーバにはアップロードしないでください。侵害される可能性があります。NATネットワークモードに設定された仮想マシン(VirtualBox や VMware など)を使用することを推奨します。ゲストマシン内に、Webサーバとデータベース用の XAMPP をダウンロードしてインストールできます。

免責事項

本アプリケーション(DVWA)の使用方法について、当方は一切の責任を負いません。アプリケーションの目的は明確に示しており、悪意のある目的で使用されるべきではありません。ユーザーがDVWAを公開Webサーバにインストールすることを防ぐため、警告を発し対策を講じています。DVWAのインストールによってWebサーバが侵害された場合、その責任はアップロードおよびインストールを行った個人または組織に帰属し、当方は一切の責任を負いません。


ライセンス

このファイルはDamn Vulnerable Web Application(DVWA)の一部です。

Damn Vulnerable Web Application(DVWA)はフリーソフトウェアです。あなたはこれを、フリーソフトウェア財団によって発行されたGNU General Public License(バージョン3、または(オプションとして)それ以降のバージョン)の条項に基づいて、再配布および/または改変することができます。

Damn Vulnerable Web Application(DVWA)は、有用であることを期待して配布されていますが、いかなる保証もありません。暗黙の商品性保証や特定目的への適合性の保証もありません。詳細については、GNU General Public Licenseを参照してください。

あなたはこのプログラムとともにGNU General Public Licenseのコピーを受け取っているはずです。ない場合は、https://www.gnu.org/licenses/ を参照してください。


国際化(Internationalisation)

このファイルは複数の言語で利用可能です:

  • Arabic: العربية
  • Chinese: 简体中文
  • French: Français
  • Korean: 한국어
  • Persian: فارسی
  • Polish: Polski
  • Portuguese: Português
  • Spanish: Español
  • Turkish: Türkçe
  • Indonesia: Indonesia
  • Vietnamese: Vietnamese
  • Italian: Italiano
  • Ukrainian: Українська
  • Russian: Русский

翻訳に貢献したい場合は、PRを提出してください。ただし、これは単にGoogle翻訳に通して提出することを意味するものではありません。そのような翻訳は却下されます。希望する言語の2文字コード(ISO 639-1 に基づく)をファイル名に使用し、'README.xx.md' という新しいファイルを追加して翻訳版を提出してください。


ダウンロード

DVWAにはさまざまなバージョンが存在しますが、サポートされている唯一のバージョンは公式GitHubリポジトリの最新ソースです。リポジトリからクローンするか:```sh git clone https://github.com/digininja/DVWA.git

root@kitploit:~
または、[ファイルのZIPをダウンロード](https://github.com/digininja/DVWA/archive/master.zip)してください。

- - -

### インストール

### 自動インストール 🛠️

**注意:これは公式のDVWAスクリプトではありません。[IamCarron](https://github.com/iamCarron/)によって作成されました。このスクリプトの作成には多くの作業が費やされており、作成時点では悪意のある動作はありませんでしたが、システム上で盲目的に実行する前にスクリプトを確認することをお勧めします。念のため。バグは[IamCarron](https://github.com/iamCarron/)に報告してください。ここではありません。**

Kali、Ubuntu、Kubuntu、Linux Mint、Zorin OSなどのDebianベースのマシン向けのDVWA自動設定スクリプト。

**注意:このスクリプトはroot権限を必要とし、Debianベースのシステム向けに調整されています。rootユーザーとして実行していることを確認してください。**

#### インストール要件

- **オペレーティングシステム:** Debianベースのシステム(Kali、Ubuntu、Kubuntu、Linux Mint、Zorin OS)
- **権限:** rootユーザーとして実行

#### インストール手順

##### ワンライナー

これにより、[@IamCarron](https://github.com/IamCarron)によって書かれたインストールスクリプトがダウンロードされ、自動的に実行されます。著者とレビュー時のスクリプトを信頼していなければここに含めることはありませんが、誰かが悪意を持つ可能性は常にあります。そのため、自分で確認せずに他人のコードを実行するのが不安な場合は、手動の手順に従って、ダウンロード後に確認してください。```sh
sudo bash -c "$(curl --fail --show-error --silent --location https://raw.githubusercontent.com/IamCarron/DVWA-Script/main/Install-DVWA.sh)"
スクリプトを手動で実行する
  1. スクリプトをダウンロード: ```sh wget https://raw.githubusercontent.com/IamCarron/DVWA-Script/main/Install-DVWA.sh
    root@kitploit:~
  2. スクリプトを実行可能にする: ```sh chmod +x Install-DVWA.sh
    root@kitploit:~
  3. スクリプトをrootとして実行: ```sh sudo ./Install-DVWA.sh
    root@kitploit:~

インストール動画

  • VirtualBox上で動作するKaliにDVWAをインストールする
  • XAMPPを使用してWindowsにDVWAをインストールする
  • Windows 10にDamn Vulnerable Web Application(DVWA)をインストールする

Windows + XAMPP

DVWAをインストールする最も簡単な方法は、まだWebサーバーをセットアップしていない場合、XAMPPをダウンロードしてインストールすることです。

XAMPPは、Linux、Solaris、Windows、Mac OS X向けの非常に簡単にインストールできるApacheディストリビューションです。パッケージにはApache Webサーバー、MySQL、PHP、Perl、FTPサーバー、phpMyAdminが含まれています。

このビデオでは、Windowsのインストールプロセスを説明していますが、他のOSでも同様の手順です。

Docker

hoang-himself と JGillam のおかげで、master ブランチへのコミットごとにDockerイメージがビルドされ、GitHub Container Registryからプルできるようになっています。

入手できるものの詳細については、ビルド済みのDockerイメージを参照してください。

はじめに

前提条件: Docker と Docker Compose。

  • Docker Desktop を使用している場合、これらは両方とも既にインストールされているはずです。
  • Linux で Docker Engine を使用する場合は、インストールガイドに従ってください。

上記の最新のDockerリリースをサポートしています。 Linux を使用していて、パッケージマネージャーに付属の Docker パッケージを使用している場合でも、おそらく動作しますが、サポートはベストエフォートとなります。

パッケージマネージャーバージョンからアップストリームの Docker にアップグレードするには、Ubuntu、Fedora などのマニュアルにあるように、古いバージョンをアンインストールする必要があります。 Docker データ(コンテナ、イメージ、ボリュームなど)は影響を受けないはずですが、問題が発生した場合は、Dockerに報告し、それまでは検索エンジンをご利用ください。

それでは、始めるには:

  1. docker version と docker compose version を実行して、Docker と Docker Compose が正しくインストールされていることを確認します。出力にバージョンが表示されるはずです。

    例:

    root@kitploit:~
    >>> docker version
    Client:
     [...]
     Version:           23.0.5
     [...]
    
    Server: Docker Desktop 4.19.0 (106363)
     Engine:
      [...]
      Version:          23.0.5
      [...]
    
    >>> docker compose version
    Docker Compose version v2.17.3
    

    何も表示されないか、コマンドが見つからないというエラーが出た場合は、前提条件に従って Docker と Docker Compose をセットアップしてください。

  2. このリポジトリをクローンまたはダウンロードして展開します(ダウンロード を参照)。

  3. お好みのターミナルを開き、作業ディレクトリをこのフォルダ(DVWA)に変更します。

  4. docker compose up -d を実行します。

DVWA が http://localhost:4280 で利用可能になりました。

コンテナで DVWA を実行する場合、Webサーバーは通常のポート80ではなく、ポート4280で待機していることに注意してください。 この決定の詳細については、DVWAを別のポートで実行したいを参照してください。

ローカルビルド

ローカルで変更を加え、プロジェクトをローカルからビルドしたい場合は、compose.yml に移動し、pull_policy: always を pull_policy: build に変更します。

docker compose up -d を実行すると、レジストリにあるものに関係なく、Docker がローカルからイメージをビルドするようになります。

参考: pull_policy.

ローカルファイルの提供

ローカルで変更を行っており、変更のたびにプロジェクトをビルドしたくない場合:

  1. compose.yml に移動し、以下をコメント解除します:
    root@kitploit:~
        # volumes:
        #   - ./:/var/www/html
    
  2. cp config/config.inc.php.dist config/config.inc.php を実行してデフォルトの設定ファイルをコピーします。
  3. docker compose up -d を実行すると、ローカルファイルの変更がコンテナに反映されます。

PHP バージョン

理想的には、最新の安定版 PHP を使用することをお勧めします。このアプリはそのバージョンで開発およびテストされます。

PHP 5.x を使用しようとするユーザーへのサポートは提供されません。

7.3 未満のバージョンには既知の問題があり、問題が発生します。アプリの大部分は動作しますが、一部の機能がランダムに動作しない可能性があります。古いバージョンを使用する特別な理由がない限り、サポートは提供されません。

Linux パッケージ

Debian ベースの Linux ディストリビューションを使用している場合、以下のパッケージ(またはそれに相当するもの)をインストールする必要があります:

  • apache2
  • libapache2-mod-php
  • mariadb-server
  • mariadb-client
  • php php-mysqli
  • php-gd

その前にアップデートを実行することをお勧めします。これにより、すべての最新バージョンを確実に入手できます。```sh apt update apt install -y apache2 mariadb-server mariadb-client php php-mysqli php-gd libapache2-mod-php

root@kitploit:~
このサイトはMySQLでも動作しますが、MariaDBの方が初期状態で動作するため、MySQLで動作させるには変更が必要なため、MariaDBを強くお勧めします。

### Apache Modules

APIラボを使用する場合は、Apacheモジュール `mod_rewrite` を有効にする必要があります。Linuxでこれを行うには、以下を実行します:```
a2enmod rewrite

その後、Apacheを再起動します:``` apachectl restart

root@kitploit:~
### ベンダーファイル

APIモジュールを使用するには、[Composer](https://getcomposer.org/)を使ってベンダーファイルのセットをインストールする必要があります。

まず、Composerがインストールされていることを確認してください。後方互換性の問題があるようなので、私は常に最新バージョンをこちらから入手しています:

https://getcomposer.org/doc/00-intro.md

サイトの指示に従ってインストールしてください。

次に、`vulnerabilities/api`ディレクトリに移動して、次のコマンドを実行します:```
composer.phar install

Composer をシステムパスにインストールしなかった場合は、そのフルパスを参照するようにしてください。

設定

設定ファイル

DVWA には設定ファイルのダミーコピーが付属しており、それを適切な場所にコピーしてから必要な変更を加える必要があります。Linux の場合、DVWA ディレクトリにいることを前提として、以下のように実行します。

cp config/config.inc.php.dist config/config.inc.php

Windows の場合、ファイル拡張子を非表示にしていると少し難しいかもしれません。これについて不明な場合は、こちらのブログ記事で詳しく説明されています。

How to Make Windows Show File Extensions

環境変数による設定

設定ファイルを変更する代わりに、ほとんどの設定を環境変数で行うこともできます。Docker や Kubernetes でのデプロイにおいて、これにより新しい Docker イメージを作成することなく設定を変更できます。変数は config/config.inc.php.dist ファイルにあります。

デフォルトのセキュリティレベルを "low" に設定したい場合は、以下の行を compose.yml ファイルに追加します。```yml environment:

  • DB_SERVER=db
  • DEFAULT_SECURITY_LEVEL=low
root@kitploit:~
### データベースのセットアップ

データベースをセットアップするには、メインメニューの `Setup DVWA` ボタンをクリックし、次に `Create / Reset Database` ボタンをクリックします。これにより、いくつかのデータを含むデータベースが作成/リセットされます。

データベースの作成中にエラーが発生した場合は、`./config/config.inc.php` 内のデータベース認証情報が正しいことを確認してください。_これはサンプルファイルである config.inc.php.dist とは異なります。_

変数はデフォルトで次のように設定されています。```php
$_DVWA[ 'db_server'] = '127.0.0.1';
$_DVWA[ 'db_port'] = '3306';
$_DVWA[ 'db_user' ] = 'dvwa';
$_DVWA[ 'db_password' ] = 'p@ssw0rd';
$_DVWA[ 'db_database' ] = 'dvwa';

注意:MySQLではなくMariaDBを使用している場合(KaliではデフォルトがMariaDBです)、データベースのrootユーザーは使用できません。新しいデータベースユーザーを作成する必要があります。これを行うには、データベースにrootユーザーとして接続し、次のコマンドを使用してください:```mariadb MariaDB [(none)]> create database dvwa; Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> create user dvwa@localhost identified by 'p@ssw0rd'; Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> grant all on dvwa.* to dvwa@localhost; Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> flush privileges; Query OK, 0 rows affected (0.00 sec)

root@kitploit:~
### 認証の無効化

一部のツールは認証と相性が悪く、DVWAで使用できない場合があります。これを回避するために、認証チェックを無効にする設定オプションがあります。これを行うには、設定ファイルで以下を設定してください:```php
$_DVWA[ 'disable_authentication' ] = true;

また、実行したいテストに適切なセキュリティレベルに設定する必要があります:```php $_DVWA[ 'default_security_level' ] = 'low';

root@kitploit:~
この状態では、ログインやクッキーの設定を必要とせずにすべての機能にアクセスできます。

### フォルダの権限

- `./hackable/uploads/` - Webサービスから書き込み可能である必要があります(ファイルアップロード用)。

### PHPの設定

Linuxシステムでは、通常 `/etc/php/x.x/fpm/php.ini` または `/etc/php/x.x/apache2/php.ini` にあります。

- リモートファイルインクルージョン(RFI)を許可する場合:
  - `allow_url_include = on` [[allow_url_include](https://secure.php.net/manual/en/filesystem.configuration.php#ini.allow-url-include)]
  - `allow_url_fopen = on` [[allow_url_fopen](https://secure.php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen)]

- PHPがすべてのエラーメッセージを表示するようにする場合:
  - `display_errors = on` [[display_errors](https://secure.php.net/manual/en/errorfunc.configuration.php#ini.display-errors)]
  - `display_startup_errors = on` [[display_startup_errors](https://secure.php.net/manual/en/errorfunc.configuration.php#ini.display-startup-errors)]

変更後は、必ずPHPサービスまたはApacheを再起動してください。

### reCAPTCHA

これは「Insecure CAPTCHA」ラボにのみ必要です。そのラボでプレイしていない場合は、このセクションは無視してかまいません。

<https://www.google.com/recaptcha/admin/create> からAPIキーのペアを生成してください。

これらを `./config/config.inc.php` の以下のセクションに設定します:

- `$_DVWA[ 'recaptcha_public_key' ]`
- `$_DVWA[ 'recaptcha_private_key' ]`

### デフォルトの認証情報

**デフォルトのユーザー名 = `admin`**

**デフォルトのパスワード = `password`**

_...簡単にブルートフォース可能です ;)_

ログインURL: <http://127.0.0.1/login.php>

_注: DVWAを別のディレクトリにインストールした場合は、このURLは異なります。_

- - -

## トラブルシューティング

以下は、Debian、Ubuntu、Kali などのDebianベースのディストリビューションを想定しています。他のディストリビューションの場合は、同様に進めてください。ただし、必要に応じてコマンドを更新してください。

文章を読むよりも動画を視聴したい場合は、最も一般的な問題が動画 [Fixing DVWA Setup Issues](https://youtu.be/C-kig5qrPSA?si=_a4Bop505-1tXb_F) でカバーされています。

### コンテナ

#### ログにアクセスしたい

Docker Desktopを使用している場合、ログはグラフィカルアプリケーションからアクセスできます。
新しいバージョンでは細かい点が変わる可能性がありますが、アクセス方法は同じです。

![Overview of DVWA compose](https://assets.kitploit.com/production/public/readmes/366/d7adf5fa9e4bf50dea464db5f5bbcff8b6958b97ebc8d11957655e496e138273.png)
![Viewing DVWA logs](https://assets.kitploit.com/production/public/readmes/366/60916b4b174484e616240d0623a00a5928fe6bc3c509aa145cd2e1a2a52ff21c.png)

ログはターミナルからもアクセスできます。

1. ターミナルを開き、作業ディレクトリをDVWAに変更します
2. マージされたログを表示します

    ```sh
    docker compose logs
    ```

   ログをファイル(例: `dvwa.log`)にエクスポートする場合   ```sh
   docker compose logs > dvwa.log

DVWAを別のポートで実行したい

デフォルトでポート80を使用しない理由はいくつかあります:

  • 一部のユーザーは既にポート80で何かを実行している可能性があります。
  • 一部のユーザーはルートレスコンテナエンジン(Podmanなど)を使用しており、80は特権ポート(< 1024)です。追加の設定(例:net.ipv4.ip_unprivileged_port_startの設定)が必要ですが、ご自身で調査する必要があります。

compose.ymlファイルのポートバインディングを変更することで、DVWAを別のポートで公開できます。 例えば、次のように変更できます。```yml ports:

  • 127.0.0.1:4280:80
root@kitploit:~
へ```yml
ports:
  - 127.0.0.1:8806:80

DVWAはhttp://localhost:8806でアクセスできるようになりました。

DVWAを自分のデバイスだけでなく、ローカルネットワークからもアクセスできるようにしたい場合(例えば、ワークショップ用のテストマシンをセットアップする場合など)、ポートマッピングから127.0.0.1:を削除するか、LAN IPに置き換えることができます。そうすると、利用可能なすべてのデバイスでリッスンします。安全なデフォルトとしては、常にローカルループバックデバイスでのみリッスンするようにすべきです。結局のところ、それはあなたのマシン上で動作する、非常に脆弱なWebアプリケーションなのですから。

Docker実行時にDVWAが自動起動

含まれているcompose.ymlファイルは、Docker起動時にDVWAとそのデータベースを自動的に実行します。

これを無効にするには、compose.ymlファイル内のrestart: unless-stopped行を削除するかコメントアウトしてください。

この動作を一時的に無効にするには、docker compose stopを実行するか、Docker Desktopでdvwaを見つけて「停止」をクリックします。さらに、コンテナを削除するか、docker compose downを実行することもできます。

ログファイル

Linuxシステムでは、Apacheはデフォルトでaccess.logとerror.logの2つのログファイルを生成します。Debianベースのシステムでは、これらは通常/var/log/apache2/にあります。

エラーレポートや問題などを送信する際は、これらのファイルのそれぞれから少なくとも最後の5行を含めてください。Debianベースのシステムでは、次のようにして取得できます:```sh tail -n 5 /var/log/apache2/access.log /var/log/apache2/error.log

root@kitploit:~
### サイトにアクセスしたら404またはApache2のデフォルトページが表示されました

[Video Help](https://youtu.be/C-kig5qrPSA?si=wTS3Aj8fycW3Idfr&t=141)

この問題が発生している場合、ファイルの場所を理解する必要があります。デフォルトでは、Apacheのドキュメントルート(Webコンテンツを探し始める場所)は `/var/www/html` です。このディレクトリに `hello.txt` ファイルを置いた場合、アクセスするには `http://localhost/hello.txt` にブラウズします。

ディレクトリを作成してその中にファイルを置いた場合 - `/var/www/html/mydir/hello.txt` - その場合は `http://localhost/mydir/hello.txt` にブラウズする必要があります。

Linuxはデフォルトで大文字小文字を区別するため、上記の例で以下のいずれかにブラウズしようとすると、`404 Not Found` が表示されます:

- `http://localhost/MyDir/hello.txt`
- `http://localhost/mydir/Hello.txt`
- `http://localhost/MYDIR/hello.txt`

これはDVWAにどのような影響を与えるのでしょうか?多くの人はgitを使用してDVWAを `/var/www/html` にクローンし、その中にDVWAのすべてのファイルが含まれた `/var/www/html/DVWA/` ディレクトリが作成されます。その後 `http://localhost/` にブラウズすると、`404` またはデフォルトのApacheウェルカムページが表示されます。ファイルはDVWA内にあるため、`http://localhost/DVWA` にブラウズする必要があります。

もう一つのよくある間違いは `http://localhost/dvwa` にブラウズすることです。Linuxのディレクトリ照合では `dvwa` は `DVWA` ではないため、`404` が表示されます。

したがって、セットアップ後にサイトにアクセスして `404` が表示された場合は、ファイルをどこにインストールしたか、ドキュメントルートからの相対位置、使用したディレクトリの大文字小文字を考えてください。

### サイトにアクセスしたら空白の画面が表示されました

[Video Help](https://youtu.be/C-kig5qrPSA?si=wTS3Aj8fycW3Idfr&t=243)

これは通常、ある設定問題が別の問題を隠している状態です。デフォルトではPHPはエラーを表示しないため、セットアップ中にエラー表示を有効にするのを忘れると、データベース接続の失敗など他の問題がアプリの読み込みを停止させますが、何が問題かを知らせるメッセージは隠蔽されます。

これを修正するには、[PHP Configuration](#php-configuration) で説明されているように `display_errors` と `display_startup_errors` を設定し、Apacheを再起動してください。

### セットアップ実行中に「Access denied」

セットアップスクリプト実行時に以下のような表示が出た場合、設定ファイル内のユーザー名またはパスワードがデータベースに設定されているものと一致していないことを意味します。[Video Help](https://youtu.be/C-kig5qrPSA?si=_a4Bop505-1tXb_F&t=973)```mariadb
Database Error #1045: Access denied for user 'notdvwa'@'localhost' (using password: YES).

エラーは、ユーザー名 notdvwa を使用していることを示しています。

次のエラーは、設定ファイルが間違ったデータベースを指していることを示しています。動画ヘルプ```mariadb SQL: Access denied for user 'dvwa'@'localhost' to database 'notdvwa'

root@kitploit:~
これは、ユーザー `dvwa` を使用してデータベース `notdvwa` に接続しようとしていることを示しています。

最初に行うべきことは、設定ファイルに記入した内容が実際にその通りであるかどうかを再確認することです。

もし期待通りであれば、次にコマンドラインでそのユーザーとしてログインできるか確認します。データベースユーザーが `dvwa` でパスワードが `p@ssw0rd` の場合、次のコマンドを実行してください:```sh
mysql -u dvwa -pp@ssw0rd -D dvwa

注:-pの後にはスペースがありません

以下が表示されれば、パスワードは正しいです:```mariadb Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 14 Server version: 10.3.22-MariaDB-0ubuntu0.19.10.1 Ubuntu 19.10

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [dvwa]>

root@kitploit:~
コマンドラインで接続できる場合は、設定ファイルに問題がある可能性が高いです。再度確認し、それでも動作しない場合は issue を報告してください。

以下のような表示が出た場合、使用しているユーザー名またはパスワードが間違っています。[データベース設定](#database-setup)の手順を繰り返し、プロセス全体で同じユーザー名とパスワードを使用していることを確認してください。```mariadb
ERROR 1045 (28000): Access denied for user 'dvwa'@'localhost' (using password: YES)

以下のような結果が出た場合、ユーザー認証情報は正しいが、そのユーザーにはデータベースへのアクセス権がありません。セットアップ手順を再度行い、使用しているデータベース名を確認してください。```mariadb ERROR 1044 (42000): Access denied for user 'dvwa'@'localhost' to database 'dvwa'

root@kitploit:~
最終的に発生する可能性のあるエラーは次のとおりです。```mariadb
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

これは認証の問題ではなく、データベースサーバーが起動していないことを示しています。以下のコマンドで起動してください。```sh sudo service mysql start

root@kitploit:~
### 接続拒否

[動画ヘルプ](https://youtu.be/C-kig5qrPSA?si=_a4Bop505-1tXb_F&t=444)

次のようなエラーが発生します:```mariadb
Fatal error: Uncaught mysqli_sql_exception: Connection refused in /var/sites/dvwa/non-secure/htdocs/dvwa/includes/dvwaPage.inc.php:535

データベースサーバーが実行されていないか、設定ファイルのIPアドレスが間違っていることを意味します。

設定ファイルの次の行を確認して、データベースサーバーがどこにあるべきかを確認してください:```php $_DVWA[ 'db_server' ] = '127.0.0.1';

root@kitploit:~
次に、このサーバーにアクセスして、起動していることを確認します。Linuxでは、次のコマンドで行えます:```sh
systemctl status mariadb.service

そして、あなたはこのようなものを探しています。重要なのは、active (running) と表示されていることです。```sh ● mariadb.service - MariaDB 10.5.19 database server Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; preset: enabled) Active: active (running) since Thu 2024-03-14 16:04:25 GMT; 1 week 5 days ago

root@kitploit:~
実行されていない場合は、次のコマンドで開始できます:```sh
sudo systemctl stop mariadb.service 

sudo に注意し、必要に応じてLinuxユーザーパスワードを入力してください。

Windowsでは、XAMPPコンソールでステータスを確認してください。

不明な認証方式

MySQLの最新バージョンでは、PHPはデフォルト設定でデータベースと通信できなくなりました。セットアップスクリプトを実行しようとして以下のメッセージが表示された場合、設定に問題があることを意味します。```mariadb Database Error #2054: The server requested authentication method unknown to the client.

root@kitploit:~
2つの選択肢があります。最も簡単な方法はMySQLをアンインストールしてMariaDBをインストールすることです。以下はMariaDBプロジェクトによる公式ガイドです:

<https://mariadb.com/resources/blog/how-to-migrate-from-mysql-to-mariadb-on-linux-in-five-steps/>

または、以下の手順に従ってください:

1. rootとして、以下のファイルを編集します: `/etc/mysql/mysql.conf.d/mysqld.cnf`
1. `[mysqld]` の行の下に、以下を追加します:
  `default-authentication-plugin=mysql_native_password`
1. データベースを再起動します: `sudo service mysql restart`
1. データベースユーザーの認証方法を確認します:

    ```sql
    mysql> select Host,User, plugin from mysql.user where mysql.user.User = 'dvwa';
    +-----------+------------------+-----------------------+
    | Host      | User             | plugin                |
    +-----------+------------------+-----------------------+
    | localhost | dvwa             | caching_sha2_password |
    +-----------+------------------+-----------------------+
    1 rows in set (0.00 sec)
    ```

1. おそらく `caching_sha2_password` と表示されるでしょう。その場合は、以下のコマンドを実行します:

    ```sql
    mysql> ALTER USER dvwa@localhost IDENTIFIED WITH mysql_native_password BY 'p@ssw0rd';
    ```

1. 再度確認すると、今度は `mysql_native_password` と表示されるはずです。

    ```sql
    mysql> select Host,User, plugin from mysql.user where mysql.user.User = 'dvwa';
    +-----------+------+-----------------------+
    | Host      | User | plugin                |
    +-----------+------+-----------------------+
    | localhost | dvwa | mysql_native_password |
    +-----------+------+-----------------------+
    1 row in set (0.00 sec)
    ```

これで、セットアッププロセスは正常に動作するはずです。

詳細については、以下のページを参照してください: <https://www.php.net/manual/en/mysqli.requirements.php>.

### データベースエラー #2002: そのようなファイルまたはディレクトリはありません

データベースサーバーが動作していません。Debianベースのディストリビューションでは、以下で実行できます:```sh
sudo service mysql start

Errors「MySQL server has gone away」と「Packets out of order」

このエラーが発生する理由はいくつかありますが、最も可能性が高いのは、使用しているデータベースサーバーのバージョンがPHPと互換性がないことです。

これは、MySQLの最新バージョンを実行している場合によく見られ、PHPとうまく連携しません。最善のアドバイスは、MySQLをやめてMariaDBをインストールすることです。これはサポート対象外です。

詳細については、以下を参照してください。

https://www.ryadel.com/en/fix-mysql-server-gone-away-packets-order-similar-mysql-related-errors/

CentOSでデータベースに接続できないのはなぜですか?

SELinuxに問題がある可能性があります。SELinuxを無効にするか、以下のコマンドを実行してWebサーバーがデータベースと通信できるようにしてください。```sh setsebool -P httpd_can_network_connect_db 1

root@kitploit:~
### MariaDB Dockerが起動しない

MariaDBを起動しようとしてDockerのログに以下のエラーが表示される場合、ホストマシンのメモリが不足している可能性があります。ホスティング環境で使用している場合、最善の解決策は、マシンサイズをアップグレードしてメモリを増やし、再試行することです。```
[Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:10.11.15+maria~ubu2204 started.
[Warn] [Entrypoint]: /sys/fs/cgroup///memory.pressure not writable, functionality unavailable to MariaDB

また、compose.ymlファイルのvolumesセクションに次の行を追加する必要があるかもしれません:```

  • /sys/fs/cgroup/memory.pressure:/sys/fs/cgroup/memory.pressure
root@kitploit:~
そうすると、デフォルトの設定ファイルの volumes セクションが以下のように変わります。```
     volumes:
       - dvwa:/var/lib/mysql
       - /sys/fs/cgroup/memory.pressure:/sys/fs/cgroup/memory.pressure

なぜこれが機能するかの詳細については、このイシューを参照してください。

その他

最新のトラブルシューティング情報については、gitリポジトリのオープンおよびクローズされたチケットの両方をご確認ください:

https://github.com/digininja/DVWA/issues

チケットを提出する前に、リポジトリから最新バージョンのコードを実行していることを確認してください。これは最新のリリースではなく、masterブランチの最新コードです。

チケットを提出する場合は、少なくとも以下の情報を提供してください:

  • オペレーティングシステム
  • 報告しているエラーが発生した直後のWebサーバーエラーログの最後の5行
  • データベース認証の問題の場合は、上記の手順を実行し、各ステップのスクリーンショットを撮ってください。これらを、データベースユーザーとパスワードを示す設定ファイルの該当セクションのスクリーンショットと共に提出してください。
  • 何が問題か、期待される動作、修正のために試したことの完全な説明。「ログインが壊れている」だけでは、私たちが問題を理解し、修正を支援するのに十分ではありません。

チュートリアル

いくつかの脆弱性を解説し、その検出方法と悪用方法を示すチュートリアル動画を作成しようとしています。これまでに作成したものは以下の通りです:

反射型XSSの発見と悪用


SQLite3 SQLインジェクション

このサポートは限られています。問題を報告する前に、デバッグに取り組む準備ができていることを確認してください。単に「動作しません」と主張しないでください。

デフォルトでは、SQLiおよびBlind SQLiはサイトで使用されているMariaDB/MySQLサーバーに対して行われますが、代わりにSQLite3に対してSQLiテストを行うように切り替えることが可能です。

PHPでSQLite3を動作させる方法については説明しませんが、php-sqlite3パッケージをインストールして有効にするだけの簡単な作業のはずです。

切り替えを行うには、設定ファイルを編集し、以下の行を追加または編集してください:```php $_DVWA["SQLI_DB"] = "sqlite"; $_DVWA["SQLITE_DB"] = "sqli.db";

root@kitploit:~
デフォルトでは、`database/sqli.db` ファイルを使用します。もし壊してしまった場合は、単に `database/sqli.db.dist` を上にコピーしてください。

チャレンジは MariaDB の場合とまったく同じですが、SQLite3 に対して実行される点だけが異なります。

- - -

👨‍💻 コントリビューター
-----

すべてのコントリビューションと、このプロジェクトを最新に保っていただきありがとうございます。:heart

アイデアや改善点がある場合、あるいは単に協力したい場合は、プロジェクトへの参加とコントリビューションを歓迎します。お気軽にPRを送ってください。

<p align="center">
<a href="https://github.com/digininja/DVWA/graphs/contributors">
  <img src="https://contrib.rocks/image?repo=digininja/DVWA&amp;max=500">
</a>
</p>

- - -

## 脆弱性の報告

簡単に言うと、ご遠慮ください。

年に一度ほど、誰かがアプリで見つけた脆弱性の報告を提出します。中には有料のペンテスト報告書よりも良く書かれているものもあれば、単に「ヘッダーが欠けています。報酬をください」というものもあります。

2023年、これは全く新しいレベルに達しました。誰かが脆弱性の1つに対してCVEを申請することを決め、[CVE-2023-39848](https://nvd.nist.gov/vuln/detail/CVE-2023-39848) が発行されました。その後、大騒ぎになり、これを修正するために時間が無駄になりました。

このアプリには脆弱性があります。それは意図的なものです。ほとんどは、レッスンとして取り組む、よく文書化されたものです。その他は「隠された」脆弱性であり、自分で見つけるものです。隠された追加機能を見つけるスキルを本当に披露したいなら、ブログ記事を書くかビデオを作成してください。それらについて、そしてどのように見つけたかに興味を持つ人がいるかもしれません。リンクを送っていただければ、参考文献に含めることもあります。

## リンク

プロジェクトホーム: <https://github.com/digininja/DVWA>

_DVWA チーム作成_
ツールをダウンロード