SQLインジェクションのチェックツール
対象のURL(getパラメータ、postデータとか)にSQLインジェクションの脆弱がないかを調べてくれるツールのご紹介です。
!!! 無関係のサーバへのツール実行はしないでください !!!
攻撃ととらえられる可能性があります。
Windows のコマンドプロンプトから実行します。
◆python をインストール
インストールの後、環境変数:Path に python のインストール先を追加して、パスを通しておいてください
◆sqlmap 本体
ダウンロードして任意の場所に置いてください。
◆基本コマンド
ダウンロードしたところまで移動し、以下を実行
1 |
python sqlmap.py -u "対象URL" |
◆オプション
【対象のURLを指定】
GETパラメータの場合、URLそのままコピー&ペースト
1 |
-u "http://www.testsite.local/?aaa=1&bbb=2" |
例えば、URLの末尾が店舗IDなどのURLになっている場合、店舗IDパラメータに対してチェックをしたいのでパラメータが入る箇所に「*」を入れてインジェクションポイントを指定
1 2 |
-u "http://www.testsite.local/.../shop/1000*" -u "http://www.testsite.local/.../shop/1000*/01*" |
【使っているDBがPostgreSQLの場合】
1 |
--dbms PostgreSQL |
【使っているDBが MySQLの場合】
1 |
--dbms MySQL |
【POSTパラメータの場合】
URLはPOST先
1 |
-u "http://www.testsite.local/.../login/" --data="id=hogehoge&password=hogepass" |
【UA:スマホの場合】
1 |
--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:ガラケーの場合】
1 |
--user-agent="DoCoMo/2.0 P903i" |
◆テンプレート例
1 2 3 4 5 |
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インジェクション脆弱が検知された場合
1 2 3 4 5 6 7 8 9 10 11 |
--------------------------------------------------------------------------------------------- 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)
1 |
[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)を引き上げて実施する事で脆弱検査ができます。