課題解決
INSIGHT
情報・インサイト
SQLインジェクションのチェックツール
対象のURL(getパラメータ、postデータとか)にSQLインジェクションの脆弱がないかを調べてくれるツールのご紹介です。
!!! 無関係のサーバへのツール実行はしないでください !!!
攻撃ととらえられる可能性があります。
Windows のコマンドプロンプトから実行します。
◆python をインストール
インストールの後、環境変数:Path に python のインストール先を追加して、パスを通しておいてください
◆sqlmap 本体
ダウンロードして任意の場所に置いてください。
◆基本コマンド
ダウンロードしたところまで移動し、以下を実行
python sqlmap.py -u "対象URL"
◆オプション
【対象のURLを指定】
GETパラメータの場合、URLそのままコピー&ペースト
-u "http://www.testsite.local/?aaa=1&bbb=2"
例えば、URLの末尾が店舗IDなどのURLになっている場合、店舗IDパラメータに対してチェックをしたいのでパラメータが入る箇所に「*」を入れてインジェクションポイントを指定
-u "http://www.testsite.local/.../shop/1000*" -u "http://www.testsite.local/.../shop/1000*/01*"
【使っているDBがPostgreSQLの場合】
--dbms PostgreSQL
【使っているDBが MySQLの場合】
--dbms MySQL
【POSTパラメータの場合】
URLはPOST先
-u "http://www.testsite.local/.../login/" --data="id=hogehoge&password=hogepass"
【UA:スマホの場合】
--user-agent="User-agent:Mozilla/5.0 (iPhone; U; CPU iPhone OS 2_0_1 like Mac OS X; ja-jp) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5B108 Safari/525.20"
【UA:ガラケーの場合】
--user-agent="DoCoMo/2.0 P903i"
◆テンプレート例
python sqlmap.py -u "URLURLURLURLURLURLURLURLURLURLURLURLURLURLURLURLURL" --dbms PostgreSQL python sqlmap.py -u "URLURLURLURLURLURLURLURLURLURLURLURLURLURLURLURLURL" --dbms PostgreSQL --user-agent="User-agent:Mozilla/5.0 (iPhone; U; CPU iPhone OS 2_0_1 like Mac OS X; ja-jp) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5B108 Safari/525.20" python sqlmap.py -u "URLURLURLURLURLURLURLURLURLURLURLURLURLURLURLURLURL" --dbms PostgreSQL --user-agent="User-agent:DoCoMo/2.0 P903i"
◆実行結果の見方
パラメータ param_id に対して、SQLインジェクション脆弱が検知された場合
---------------------------------------------------------------------------------------------
Parameter: param_id (GET)
Type: boolean-based blind
Title: AND boolean-based blind - WHERE or HAVING clause
Payload: param_id=6738 AND 7751=7751
Type: UNION query
Title: Generic UNION query (NULL) - 62 columns
Payload: param_id=-9857 UNION ALL SELECT NULL,NULL,NULL,....~ 省略 ~
---------------------------------------------------------------------------------------------
PCのユーザフォルダ以下にログデータが吐き出されます(メッセージ最後のあたりに出力先表示されます)
脆弱検知なし(上記のテンプレコマンドで実施した場合:レベル0)
[14:34:43] [CRITICAL] all tested parameters appear to be not injectable. Try to increase '--level'/'--risk' values to perform more tests. ~・・・
[CRITIAL]とありますが、文面の通り「インジェクションできないようです」とのことなので、レベル0設定での脆弱検知なし。
レベル(0~5まで。デフォルトは 0)を引き上げて実施する事で脆弱検査ができます。