sqlmapを使ってSQLインジェクションの診断をする
気になったので、軽くどういったものなのか自分のローカル環境で試してみました。
sqlmap とは
- 公式: http://sqlmap.org/
- github: https://github.com/sqlmapproject/sqlmap
- 日本語README: https://github.com/sqlmapproject/sqlmap/blob/master/doc/translations/README-ja-JP.md
- マニュアル: https://github.com/sqlmapproject/sqlmap/wiki
sqlmapはオープンソースのペネトレーションテスティングツールです。SQLインジェクションの脆弱性の検出、活用、そしてデータベースサーバ奪取のプロセスを自動化します。 強力な検出エンジン、ペネトレーションテスターのための多くのニッチ機能、持続的なデータベースのフィンガープリンティングから、データベースのデータ取得やアウトオブバンド接続を介したオペレーティング・システム上でのコマンド実行、ファイルシステムへのアクセスなどの広範囲に及ぶスイッチを提供します。
SQLインジェクションに特化した脆弱性の診断ツールのようです。
※ 自分の管理外のサーバに使うと攻撃となるので注意が必要です。(絶対しないこと)
インストール
こちらの手順で、インストールできます。
sqlmap/README-ja-JP.md at master · sqlmapproject/sqlmap · GitHub
自分の環境には(Ubuntu 18.04 LTS)、sudo apt install sqlmap
で入れることができました。
以下のバージョンが入りました。
sqlmap --version 1.2.4#stable
mac の場合は、brew install sqlmap
でも入るそうです。
使い方
-u
で検査対象のURLを指定
--data
を付けるとリクエストBODYの内容を含めてPOSTします。JSON形式もよしなにやってくれます。
例:
sqlmap -u http://www.example.com/users --data '{"id":2,"name":"taro"}'
その他のオプション
--dbms
DBMSを指定します。--dump
テーブルのデータを取得します。(怖っ)-T
--dump
で出力するテーブルを指定します。
ローカル環境で、わざと脆弱なコードを追加したりするなど、自分のサービス宛に実行したり試してみましたが、 検出からデータの取得まで一連の機能が備わっており、便利な反面、悪用されるとホントに怖いなという気持ちになりました。