実装機能
巡回機能
- ブラウザのProxyとして働く。
- ブラウザでWebアプリの巡回を行う。
- 「レコード」ボタンをクリックしてから「停止」ボタンをクリックするまでに発生したリクエストを一時的に保存する。
- このうち、除外する拡張子のものは保存しない。
- GUIで操作を行う(GUIにはEclipseを使用?)
- 「検査」ボタンで、後述の検査機能を実施する。
- 巡回を開始するとき、以前の巡回の続きも選べるようにする。
検査機能
- 巡回機能で巡回した手順を、1つのテストケースですべて実施する。
- 巡回機能で巡回した複数の手順から1つを選べるようにする。
- 各テストケースでは、1つのリクエストの1つのパラメータのみ、シグネチャファイルの検査-文字列に変更して、リクエストを実施する。
- テストケースのリクエストに対するレスポンスを全て記録する。
- 脆弱性の有無はシグネチャファイルの検証文字列が存在していることをベースとする。
- 脆弱性の有無の判断は、巡回したすべてのページを総合して判断する。
- 検査用APIを公開し、これを用いて脆弱性の判断モジュールが作成できるようにする。
XSS用モジュール
単純に、レスポンスに指定した文字列が含まれているかどうかで、脆弱性の有無を判断。
OSコマンドインジェクション用モジュール
サーバ側からTCP接続を行うような攻撃パターンを送信し、ツール側で、TCP接続を待ちうけ。接続があったら、脆弱性ありと判断。
その他インジェクション及びDirectory Traversal用モジュール
対策がなされていなければ、必ずSQLエラーなどのシステムエラーが発生するデータ(例えば「'」)と、そのデータを含むけれど、エラーが発生しないようなデータ(例えば「' or 'a'='b」)を投げてみて、そのレスポンスの構造の違い(とりあえず、HTMLタグが同じかどうかを確認)で判断。対策がされていれば、両方ともエラーか、両方とも正常な結果を表示するはず。
実装予定機能
機能要望
- 検査結果から、手動で誤報の確認が出来るインタフェースが欲しいなぁ
最終更新:2007年04月03日 18:13