sqlmapを使ってSQLインジェクションの診断をする

気になったので、軽くどういったものなのか自分のローカル環境で試してみました。

sqlmap とは

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 で出力するテーブルを指定します。

ローカル環境で、わざと脆弱なコードを追加したりするなど、自分のサービス宛に実行したり試してみましたが、 検出からデータの取得まで一連の機能が備わっており、便利な反面、悪用されるとホントに怖いなという気持ちになりました。