sqlmap

当ページでは、sqlmapというセキュリティツールの概要と使い方についてまとめています。

sqlmapとは

sqlmapとは、Webアプリケーションに対してSQLインジェクションという攻撃を実行するコマンドラインツールのこと。
オープンソースのソフトウェアであり、ライセンス「GPL」の利用条件の範囲で無償で利用できる。
公式ホームページは「https://sqlmap.org

sqlmapの導入方法

公式のgitレポジトリからソースをcloneする。
 
「sqlmap.py」を実行し、正常に起動できることを確認する。
※ Pythonの対応バージョンは2.6系、2.7系、3系。
 
以下のコマンドでsqlmapの攻撃値のアップデートができる。

sqlmapコマンドの使い方

便利なオプション

オプション概要
-u攻撃対象のURL
-p攻撃対象のパラメータ名
--dbmsデータベースの種類(指定したDBの攻撃値のみに絞って挿入)
--dumpテーブル情報を取得
--dump-all全てのテーブル情報を取得
-r <ファイル名>HTTPリクエストデータを指定して実行する
--os-shellシェルの取得
--risk攻撃値の網羅性レベル。1〜3の範囲で指定する。 1:基本的な攻撃値のみ(デフォルトの設定) 2:time-based SQL injectionの攻撃値も試す。 3:OR-based SQL injectionの攻撃値も試す
--level検査対象となるパラメータの範囲。1〜5の範囲で指定する。 1:基本的なパラメータを検査(デフォルトの設定) 2:Cookieのパラメータも検査対象にする。 3:「User-Agent」ヘッダや「Referer」ヘッダも検査対象にする
--proxyプロキシの設定
--delay各リクエスト間で遅延させる時間(秒)
 

具体的な利用例

「-p」で攻撃値挿入対象のパラメータを「id」のみに絞る。
 
「--cookie」でCookieを設定する。
 
「--dbms」でデータベースの種類が「MySQL」と分かっている時、攻撃値を絞って検査する。
 
「--os-shell」でSQLインジェクションを応用し、Shellまで取得する。
 
検査対象がPOSTメソッドの場合、「--data」でリクエストのボディの値を指定する。
 
「-r」でHTTPリクエストデータを指定して実行する。
BurpSuiteにて対象の通信で「Save item」を選択し、ファイル名「reqest.txt」でローカルへ保存後に以下のコマンドで指定する。
 
値の中に「*」を挿入し、「*」の部分に検査値を挿入する
 
「--proxy」でプロキシを設定する。

関連リンク