レポートの作成
先ほどratproxyを経由してWebアプリケーションにアクセスし、操作を行ったが、その際にもratproxyはログを出力し続けている。レポートを作成する際はこのログファイルと付属するシェルスクリプト「ratproxy-report.sh」を使用する。
プロンプト8: ratproxy-report.shに作成されたログファイルを渡し、結果をreport.htmlに出力
% ratproxy-report.sh test.log > report.html
ratproxy-report.shはシェルとして/bin/bashを指定している。環境によってはbashがこのパスに存在せず、動作しない場合があるので、直接スクリプトファイルを修正するなどして適宜対応されたい。
レポートに表示される発見された問題は、主に次のランク付けが行われている。
- LOW/MEDIUM/HIGH: 問題の緊急度。HIGHになるほど緊急度が高い
- INFO: 継続解析するための非差別的なエントリ
- ECHO/echo: クエリパラメータとして渡した値が応答結果の中に含まれる/含まれない
- PRED/pred: リクエストするURLかクエリデータを、第三者が予測できてしまう/予測できない
- AUTH/auth: クッキー認証が行われている/行われていない
発見された問題はあらかじめ決められた分類ごとに表示される。分類の代表例は次のとおり。
- Direct markup echoed back: クエリとして<script><img>などといったマークアップを渡した際、そのままマークアップが出力されてしまっている箇所に表示される。XSS/XMLインジェクションを実行される可能性がある
- Bad or no charset declared for renderable file: 文字コードが明示されていないか、間違っている箇所に表示される。UTF-7 XSS攻撃を実行される可能性がある
- SQL code in query parameters: クエリパラメータにSQL文が直接埋め込まれている箇所に表示される。受け取ったパラメータを適切にエスケープせずに使用してしまうWebアプリケーションの場合、SQLインジェクションを実行される可能性がある
このほかにもおよそ40種類ほどの分類が存在するようだ。詳細は成果物に含まれるdoc/READMEやmessages.listを参照されたい。
オープンソース化されたratproxy、今後の発展に注目
ratproxyはプロキシサーバとして動作するため、脆弱性発見のためのWebアプリケーション操作は基本的に手動だ。しかしSeleniumやFirebugなどのツールと併用することで、より効率のよい脆弱性検査を実施することが可能となるだろう。脆弱性検査でいままでとくにツールを利用していなかったデベロッパはもちろんのこと、すでに他のツールを採用しているデベロッパも選択肢のひとつとして検討する価値がありそうだ。
また優れた機能をもつratproxyがオープンソース化されたことで、今後さまざまなサードパーティ製のアプリケーションが登場していくことが期待できる。これからの動向に注目していきたい。