SQL インジェクションでログインパスワードを特定する

WEBアプリケーション

本記事では、SQL インジェクションによりログインパスワードが格納されているテーブルのレコードを取得し、そこから解析を行うことでパスワードを特定します。

前回記事で、SQL インジェクションにより DVWA が使用しているテーブルを取得し、その結果「users」というテーブルを使用していることが判明しました。

今回は、このテーブルからパスワード情報を取得します。

パスワード情報を取得する

この段階では users という名前からログインアカウントの情報が格納されているかもしれない という推測にすぎません。
そのため、また UNION 句を使用した SQL インジェクションでデータを確認します。

まずはカラム名がわからないとデータの取得が行えないので、INFORMATION_SCHEMA からカラム名の取得を行います。

MySQL :: MySQL 5.6 リファレンスマニュアル :: 21.4 INFORMATION_SCHEMA COLUMNS テーブル

カラム名は、「COLUMNS」テーブルの「COLUMN_NAME」に格納されています。
WHERE 句で DVWA で使用しており且つ users という名前のテーブルという条件で絞り、カラム名を取得します。

入力値は以下になります。

' union select table_name, column_name from information_schema.columns where table_schema = 'dvwa' and table_name = 'users' #

Surname: に表示されている文字列がカラム名です。
5つ目に password というカラム名があり、ここにパスワード情報が格納されていると推測できます。

以下入力値で、ユーザ名と併せて password に格納されているデータを取得します。

' union select user, password from dvwa.users #

password にはパスワードハッシュが格納されていました。
これで、各ユーザのパスワードハッシュを取得することができました。

パスワードハッシュの解析

以降は SQL インジェクションではなく、パスワード解析の話になります。
以前このブログでも紹介した「John the Ripper」を使用する方法で可能ですが、今回は別の方法で解析を行います。

MD5 Online でパスワード解析する

ハッシュ値と元の値(パスワード)のペアを DB で管理している WEB サービスがあります。その1つが MD5 Online です。

MD5 Online | Free and fast MD5 encryption
MD5Online offers a free and fast tool to generate an MD5 hash from a word of your choice

そのペアを保有していれば、ハッシュ値を入力すると元の値を返してくれる仕組みです。

DVWA のように広く使われているアプリケーションの場合、このサービスを使うことで元の値を特定できる可能性があります。

以下の入力フォームにパスワードハッシュを入力し「Decrypt」ボタンをクリックすると、元の値が「password」であると特定できました。

findmyhash という、MD5 Online のような WEB サービスを巡回することで、パスワードハッシュからパスワードを特定するツールもあるようですが、Twitter での情報を見るに、参照先の URL がことごとくサービス停止しているようで事実上使用できない状況のようです。

ためしにインストールを試みましたが、python との依存関係(?)でインストール失敗したりとうまくいかなかったため、これ以上深堀りはしていません。

<参考ログ>

root@kali:~# findmyhash MD5 -h 5f4dcc3b5aa765d61d8327deb882cf99

Execution error:

  The Python library httplib2 is not installed in your system. 
  
  Please, install it before use this application.


root@kali:~# apt-get install python-httplib2
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 libssl1.1 : Breaks: python-httplib2 (< 0.11.3-1) but 0.7.4-2+deb7u1 is to be installed
 php7.3-cli : Depends: php7.3-readline but it is not going to be installed
 python-httplib2 : Depends: python (>= 2.6.6-7~) but it is not going to be installed
                   Depends: python (< 2.8) but it is not going to be installed
                   Depends: ca-certificates but it is not going to be installed
 systemd : Depends: libcryptsetup12 (>= 2:2.0.1) but it is not going to be installed
           Depends: libkmod2 (>= 5~) but it is not going to be installed
E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.

今回は以上です。

くどり

この記事は「ハッキング・ラボのつくりかた 第7章 」をベースに作成しています。購入リンクは以下です。
※Amazonアソシエイトを使用しています。

コメント

タイトルとURLをコピーしました