ratproxyとwapitiを組み合わせたセキュリティスキャン
以前フリーで使えるセキュリティスキャナ・ツールまとめというエントリを書いたのですが、その続きとしてコマンドラインから実行するタイプのツールとプロキシ型のツールを組み合わせる方法を紹介します。くれぐれ も悪用はしないでくださいね!
一つ注意しておかなければならないのは、特定のページに対して詳細なテストを行うのであれば、手動でテストした方が、精度は高いです(テストする人のスキルの問題もありますが)。
今回紹介するような方法だと、個人のスキルに依存することなく、ある程度のセキュリティテストを実行することができるようになりますよー、ということが主題です。
それでは、早速本題です。
ratproxy と wapiti の説明に関しては、フリーで使えるセキュリティスキャナ・ツールまとめを参照してください。ともにバージョンが上がっていますが、それほど変更はないと思います。
ratproxy 1.5.1-beta と wapiti 2.0.0-beta を使用して、セキュリティスキャンを実行します。
まずは、ratproxyを起動します
$ /path/to/ratproxy -v /tmp/ratproxy -w /tmp/ratproxy.log -lextifscgjm
オプションは ratproxy に含まれる詳細なレポートにいいよ、と書いてあるオプションです。
そして、次にwapitiで攻撃をしかけます。
$ python /path/to/wapiti.py http://example.com/ -p http://localhost:8080/
この example.com が対象となるURLです。あとはしばらく放置しておけば、wapitiの実行が終わります。
大量のURLがある場合は -x オプションを使用してチェック不要なURLを省くなどしておくとよいでしょう。もしくはディレクトリごとに実行を分けるなどしたほうがよいかもしれません(http://example.com/blog/ のように)。
また、きちんとアクセスされているかどうか不安な場合は、以下のようにすればよいでしょう。
$ python /path/to/wapiti.py http://example.com/ -p http://localhost:8080/ -v 2
実行が終わると、wapiti 2.0.0-beta では generated_report ディレクトリが生成されて、レポートが作成されます。ただ、GETに日本語が含まれるURL(?submit=検索 がふくまれるようなURL)でエラーが起きていると、生成途中で落ちてしまうようです。
ratproxy の実行結果についてもどうようにHTML作成を行うことができます。
$ /path/to/ratproxy-report.sh /tmp/ratproxy.log > ratproxy_report.html
HTMLあとはHTMLを見て、どんなエラーが発生しているのかをじっくり見ていけば、凡ミスは防げるでしょう。
また、ほぼすべてのURLに対してアクセスし、通常ではありえないようなパラメータを投げてくれるので、GET値やPOST値のチェック漏れでPHPエラーが発生していないか、といったことも調べることができます(まさに一石二鳥)
ratproxy と wapiti を一緒に使う大きな利点はありませんが、2つの ツールでチェックすれば片方でしか検知できない問題もわかるので、より安心できます。