sqlmap
当ページでは、sqlmapというセキュリティツールの概要と使い方についてまとめています。
sqlmapとは
sqlmapとは、Webアプリケーションに対してSQLインジェクションという攻撃を実行するコマンドラインツールのこと。
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」でプロキシを設定する。