sqlmapって何?sqlmapの使い方


データベースを扱うWebアプリケーションに対して、SQLインジェクションを調べるツール

SQLインジェクションという脆弱性をご存知でしょうか。SQLインジェクションとは、データベースが外部から操作されてしまう、恐ろしい脆弱性のことです。
ほとんどのWebアプリケーションはデータベースを使用してサービスを提供しています。
もし、SQLインジェクションがWebアプリケーションに存在していると、どんな被害が起きるのでしょうか。
具体的には、大切な顧客データがWebアプリケーションから第三者の手によって流出、削除、改ざんされてしまう。考えるだけでも戦々恐々です。
大事なデータを守るためには、放っておけない脆弱性です。
でも、実際にSQLインジェクションが存在するか調べようとしても、どのように調べたらいいのか、全然わからない。そんな人は多いはず。
ということで、SQLインジェクションがあるか調べることができるツールがこちら「sqlmap」です。
いや、そもそもSQLって何?っていう人はこちらをご覧ください。

sqlmapの概要

sqlmapは、オープンソースソフトウェアです。
以下に記載してあるデータベースを使用しているサイトに対して、SQLインジェクションが存在するか調べることができます。

Full support for MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase, SAP MaxDB, HSQLDB and Informix database management systems.

出典:http://sqlmap.org/

sqlmapはPython2系で書かれています。Python3系では動作しないです。
ダウンロードする、もしくはGithubからクローンをして使うこともできます。
ダウンロード
Github

今回は、以下にsqlmapの使い方の手順を示します。

!注意!
今回説明する方法を、実施許可を得ていないサーバに試した場合、不正なアクセスとみなされる場合があります。
実施する場合は、自身が管理するローカルな環境で行うようにしてください。

【筆者の環境】

sqlmapのバージョン:1.0.8.19
OS:Windows10
言語:Python 2.7.11

【操作手順】

1.SQLインジェクションが存在するか調べたい対象のサイトを用意します。
以下のサイトが検証用のローカルの環境です。

検索ボタンを押したときにアクセスするURLを対象とします。
http://www.security-test.ssie.jp/VulnerabilityEc/html/search_view.php?search=sample(※1)
※1「www.security-test.ssie.jp」は架空のドメインです。

2.対象のURLを以下のように、コマンドプロンプトにて設定します。
相対パス、もしくは絶対パスで、sqlmap.pyを指定し、引数に手順1のURLを張り付けます。
以下では、絶対パスを指定しています。
>python C:\sqlmap-master\sqlmap.py --proxy "http://127.0.0.1:8888" -u "http://www.security-test.ssie.jp/VulnerabilityEc/html/search_view.php?search=sample" --table(※2)

※2「-」付の文字は、オプションです。オプションについての詳しい説明はsqlmapのこちらに詳しく載っています。

今回、ローカルプロキシーをつないでログとして残すようにしていますが、sqlmapを動かした後に「.sqlmap」という別のフォルダ名の中にログが残ります。

では、–tableオプションでテーブル名を取得できるので、試してみます。

3.エンターキーをたたいて、いざ実行!ぽちっとなー

あとはツールが調べ終わるのを待つのみ。

そして、どんな結果が出たかというと・・・

対象のWebアプリケーションで使用されているデータベースのテーブル名を取得することができます。
そして、対象のWebアプリケーションがどのデータベースを使用しているのかも表示されました。
SQLインジェクションが存在しないWebアプリケーションであれば、テーブル名は取得できません。
テーブル名が取得できるので、SQLインジェクションが存在する可能性があります。

まとめ

sqlmapは上記の通り、SQLインジェクションがあるか調べることができます。
また、sqlmapは複雑なサイトでも、SQLインジェクションが存在するか調べることができるよう、様々なオプションがついています。機会があればぜひお試しください。

もちろん、実際にツールをかける際には、ご自身の環境に対して行ってください。

  • このエントリーをはてなブックマークに追加

PAGE TOP