sqlmapをCentOSにインストールする
sqlmapはオープンソースのSQLインジェクションの脆弱性をテストするツールです。 以前テストに使用したので、インストール方法などのメモを残しておきます。
インストール on CentOS
sqlmapはPythonによる実装なのでまずPythonを入れます。
$ sudo yum install python
$ python -V
あとはGithubからsqlmapを取得するだけ
$ git clone https://github.com/sqlmapproject/sqlmap.git
$ cd sqlmap
使い方
以下のように調査したいURLを指定してsqlmap.py
を実行するだけです。
$ python sqlmap.py -u "http://localhost/post?id=a" -a
クエリストリングの値の部分(上の例だとid=aのaの部分)をsqlmapが自動でいろいろなSQLインジェクションを調査するためのパターンに置き換えて、HTTPリクエストをバンバン実行してくれます。
URLにパラメータが埋め込まれているタイプのURLであるhttp://localhost/post/id
のような場合は、アスタリスクをつけるとそこをパラメータとみなして置き換えてくれます。
$ python sqlmap.py -u "http://localhost/post/a*" -a
POSTメソッドを使いたい場合は以下のように--data
オプションでパラメータを指定するとPOSTでリクエストする
$ python sqlmap.py -u "http://localhost/post" -a --data "id=1"
脆弱性をついてファイルを作ることもできる。
$ python sqlmap.py -u "http://localhost/post?id=a" -a --file-write="/var/tmp/foo.txt" --file-dest="/var/tmp/foo.txt"
ファイルを読む。
$ python sqlmap.py -u "http://localhost/post?id=1" -a --file-read="/var/tmp/foo.txt"
コマンド実行する。
$ python sqlmap.py -u "http://localhost/post?id=a" -a --os-cmd="touch /var/tmp/foo.txt"
ヘルプの表示
$ python sqlmap.py -h
詳細なヘルプの表示
$ python sqlmap.py -hh
sqlmapはSQLインジェクションを検出すると、その脆弱性を通してDBアクセスユーザのパスワードを辞書ベースで解析します。
テスト用に脆弱性のあるsqlinjection.php
を作ったので、安全な環境でうごかして見ると、DB内部がまるっと見えてしまったりして、なかなかョッキングな体験を味わえます。
その他
以下は、SQLインジェクションでファイルの作成やコマンドを実行できてしまうメカニズムの説明資料。
- https://www.owasp.org/images/d/dc/AppsecEU09-Damele-A-G-Advanced-SQL-injection-slides.pdf
- http://www.slideshare.net/inquis/advanced-sql-injection-to-operating-system-full-control-whitepaper-4633857
要点