Webアプリに対して、ハッキングをしていきます。
使用するのはDVWA(Damn Valunerable Web App)です。
DVWAは脆弱性のあるWebアプリの1つで、PHP、MySQLで構築されています。
まとめ記事(①〜⑯をまとめてます)
【ハッキング・ラボのつくりかた】をやってみた
システム環境
仮想化ソフト
:VirtualBox 6.1.0
ホストOS
:Windows10
ゲストOS1
:Kali Linux 2020.1
ゲストOS2
:Windows7
ゲストOS3
:Windows10
ゲストOS4
:Metasploitable
DVWAのインストール
まず、DVWAをKali Linuxにダウンロードします。
以下のコマンドで、/rootディレクトリに移動し、解凍します。
# cp ダウンロードしたディレクトリ/DVWA-master.zip /root
# unzip DVWA-master.zip
Webサーバとして公開するため、ファイルを移動し、権限を変更します。
# cp -Rv /root/DVWA-master /var/www/html/
# chmod -Rv 777 /var/www/html/DVWA-master/
configファイルを正しいファイル名に修正します。
# cd /var/www/html/DVWA-master/config
# mv config.inc.php.dist config.inc.php
ApacheとMySQLを起動します。
# cd
# service apache2 start
# service mysql start
MySQLに接続して、DB接続用のアカウントを登録します。
ここでは、IDはnakatatsu、パスワードはpasswordとしました。
# mysql -u root -p
use mysql
GRANT ALL PRIVILEGES ON *.* 'nakatatsu'@'localhost' IDENTIFIED BY 'password';
以上を入力したら、Ctr+cキーで終了した後、mysqlを再起動します。
# service mysql restart
MySQLに接続できるようにするために、config.inc.phpファイルを編集します。
# vi /var/www/html/DVWA-master/config/config.inc.php
$_DVWA['db_server'] = '127.0.0.1';
$_DVWA['db_database'] = 'dvwa';
$_DVWA['db_user'] = 'dvwa';
$_DVWA['db_password'] = 'p@assw0rd';
$_DVWA['db_server'] = '127.0.0.1';
$_DVWA['db_database'] = 'dvwa';
$_DVWA['db_user'] = 'nakatatsu';
$_DVWA['db_password'] = 'password';
「Database Setup」画面にて、「Create / Reset Database」ボタンを押し、DVWAのデータベースを作成します。
最後に、Firefoxを起動して、http://localhost/DVWA-master/login.php
にアクセスします。
Usernameにadmin、Passwordにpasswordを入力して、ログインします。
以上でDVWAのインストールは完了です。
SQLインジェクション
SQLインジェクションとは、Webアプリが想定しないSQLを実行させて、DBを不正に操作する攻撃です。
「DVWA Security」を押して、セキュリティレベルをLowにし、「Submit」ボタンを押します。
最初に、SQLインジェクションを体験してみます。
メニューから「SQL Injection」を選びます。
「User ID」の入力欄に以下を入力してみます。
これは単純なSQLインジェクションのコードです。
1’ OR ‘a’=‘a
すると、次のような結果が得られ、単純なSQLインジェクションに対する脆弱性があることがわかります。
次に、DVWAが用いているカラムを特定します。
データベース名はdvwa、テーブル名はusersです。
' union select table_name, column_name from information_schema.columns where table_schema = 'dvwa' and table_name = 'users' #
すると、次のような結果が得られ、usersテーブルのカラム名がすべて判明しました。
passwordというカラムがありますので、ここにパスワードが格納されていると推測できます。
そこで、以下を入力してみます。
' union select user, password from dvwa.users #
出力結果より、passwordに格納されているデータは、「パスワードのMD5ハッシュ値」と推測できます。
このMD5ハッシュ値を解析します。
ここでは、MD5 Onlineを使用します。
ユーザー名がgordonbのものを解析してみます。
パスワードはabc123とわかりました。
ユーザー名がadmin、smithyはMD5ハッシュ値が同じなのですが、こちらは以下のようなエラーが出て、解析することはできませんでした。
一旦ログアウトして、再度http://localhost/DVWA-master/
にアクセスします。
解析できたgordonbでログインを試みます。
ログインに成功しました。