Burp Suiteとsqlmapを使用してSQLインジェクション攻撃(Kali Linux)

前回、DVWAに対してSQLインジェクションを仕掛けてパスワードを抜き出すということをしました。

DVWAにSQLインジェクションを仕掛けてパスワードを抜いてみる!
前回インストールしたDVWAでSQL Injection を試してみる。SQLインジェクションとは? Wikiによると SQLインジェクション(英: SQL Injection)とは、...

しかし、毎回コマンドを打ち込んでいるのは面倒です。実はSQLの脆弱性を自動で調べてくれるツールは沢山あります。というわけで今回はKali Linuxのsqlmapを使用してSQLインジェクションを行います。

検証する環境

kali-wallpaper-2015-v1.1.0

  • Kali Linux (OS)
  • Burp Suite (通信情報確認)
  • SQLMap (SQL Injection)
  • DVWA (攻撃対象サーバ)

Kali Linux

Kali Linuxとは?

公式サイトより抜粋

Our Most Advanced Penetration Testing Distribution, Ever.

簡単に訳すと「高度な脆弱性テストディストリビューション」です。

ディストリビューションとはOSのようなものです。つまり脆弱性を診断することに特化したLinux系OSがKali Linuxです。

今回、実験するsqlmap以外にもWi-fiの脆弱性を調べるFern Wifi Cracker、ポートスキャンをするnmapなど数えきれない程のテストソフトがインストールされています。

2016年1月にKali Linux, Rolling Editionとなりローリング・リリース形態に変わりました。

kali-rolling

ついでに、アメリカの連続ドラマ「Mr.Robot」で行われたハッキングにもこのディストリビューションを使用したシーンがありました。

Mr.RobotってRaspberry PiとかKali Linuxとか使用していて演出も凝っているなと思いながら観ていました。笑

Burp Suite

Burp Suiteの設定

Kali Linuxには標準でBurp Suiteが用意されているのでターミナルで立ち上げます。

Burp Suiteを立ち上げたらProxy⇨OptionからProxy Listenerで待ち受けるプロキシを確認します。

これをブラウザに設定してBurp Suiteに通信内容を読ませます。

アドレス : 127.0.0.1 ポート : 8080

SnapCrab_NoName_2016-5-14_21-51-37_No-00

設定する前に、DVWAにアクセスしておきます。

SnapCrab_NoName_2016-5-14_21-49-22_No-00

ブラウザにプロキシを設定していきます。

ブラウザメニュー⇨Preferences⇨Advanced⇨Network⇨Settingsと進みConnection Settingsを開きます。

SnapCrab_NoName_2016-5-14_22-1-20_No-00

No proxyからManual proxy configurationを選択して先ほど確認したプロキシ入力します。

Use this proxy server for all protocolsにチェックをいれて全てに適応させます。

SnapCrab_NoName_2016-5-14_22-4-1_No-00

この状態でDVWAで何か操作をする、つまりサーバに対してリクエストを送るとプロキシを通してローカルホストであるBurp Suiteに情報が読み込まれます。

Burp Suiteで通信内容を確認

試しにUser IDに1を入力してSubmitしてみます。

注目して欲しいのは赤枠の部分です、更新がずっと終わりません。この状態でBurp Suiteを見てみます!

SnapCrab_NoName_2016-5-14_22-7-35_No-00

GETメソッド、リファラ、Cookieなどの情報を取得できました。

スポンサードリンク

更に、GETリクエストに対してのid Valueなども取れました。

ちなみに、今回やりたい事とは違いますがidの1を4に変更してみます。

すると、id:1と入力したはずがid:4として結果が返ってきました。

この仕組を利用してサイトに別の情報を掴ませるなんて攻撃もありますが、今回は違うのでまた今度。

SnapCrab_NoName_2016-5-14_22-16-21_No-00

sqlmap

sqlmapとは対象のサイトにSQLインジェクションの脆弱性が存在するかを自動で検証してくれるツールです。このツールはPythonで作成されています。

検証可能なデータベース

  • MySQL
  • IBM DB2
  • Oracle
  • Postgresql
  • SQLite
  • Firebird
  • Microsoft SQL Server
  • Microsoft Access
  • Sybase
  • SAP MaxDB

sqlmap公式サイトはこちら

コマンド

検索コマンド意味オプション 
--dbsデータベース検索
-Dデータベース指定--tableテーブル検索
-Tテーブル指定--columnカラム検索
-Cカラム指定--dump表示

sqlmapで脆弱性を検出

sqlmapを使用するにはGETメソッドかPOSTメソッドを使用します。上で説明したBurp Suiteで取得していますのでこれを使用します。

今回の場合GETで始まっているのでGETメソッドです。POSTで始まる場合はPOSSTメソッドです。

eea

GETメソッド/POSTメソッドの違い

これは、サーバに対して情報を送る際にURLに値を付加するか,しないかの違いです。

  • GETメソッドがURLに値を付加する
  • POSTメソッドがURLに値を付加しない

です。URLを見ても分かりますが、Burp Suiteで判断出来ます。

実行にはリファラを使用します。

Burp Suiteで取得したものを使用します!

SnapCrab_NoName_2016-5-16_22-39-29_No-00

Type,Titleの部分が重要です。どのような脆弱性が検出されたか表示してくれています。

Type: AND/OR time-based blind
Title: MySQL >= 5.0.12 AND time-based blind (SELECT)

「time-based blind」という脆弱性が見つかりました。

データベース検索

dbs をオプションに付けてデータベースを取り出します。

データベースが取得できました!

  • [*] dvwa
  • [*] information_schema
  • [*] mysql
  • [*] performance_schema
  • [*] phpmyadmin
  • [*] test

テーブル検索

-Dでデータベースを検索します。

-D dvwa –tableはデータベース「dvwa」のテーブルを表示しろという命令です。

Database : dvwa

取得できたテーブル

  • guestbook
  • users

カラム検索

続いてカラムを取得します。

-Tでテーブルを検索してくれます。

-T users –columnはテーブル「users」のカラムを表示しろという命令です。

結果をダンプ

最後にパスワードを表示します!

-Cでカラムを検索してくれます。

-C user,password –dumpはカラム「user,password」の内容をを表示しろという命令です。

これで終了です。userとパスワードを表示することができました!

最後に

前回は手動でSQLインジェクションを試しましたが、今回は専用のツールを使用してSQLインジェクションをしてみました。非常に簡単に脆弱性の検出ができましたね!

sqlmapは今回の脆弱性以外にも沢山の脆弱性に対応しているので、自分のサイトに脆弱性が存在するかといった場合に検証するツールとしては良いツールだと思います!

しかし、このツールでクラッキング行為することも可能です。前回も書きましたがsqlmapを使用して他人のサーバを攻撃することが違法です!そこら辺は十分注意して使用して下さい。

今後もKali Linuxを使用したペネトレーションテストを実験していこうと思っておりますので、今後の記事にもご期待ください。

スポンサードリンク