w3afでアプリケーション脆弱性診断してみる

「w3af」というツールの1.0がリリースされたらしいので、早速試してみました。

w3afとは、


w3afは、Webアプリケーションの攻撃および監査フレームワークです。w3afのコア部分やプラグインPythonで実装されています。SQLインジェクションのチェックやクロスサイトスクリプティングXSS)、ローカル/リモートファイルインクルージョンなどを含めた130以上のプラグインが提供されています。

w3af プロジェクト日本語トップページ - SourceForge.JP

ということらしいです。ふむふむ。英語わかんないですが、試してみましょう。

ダウンロードとインストール

公式サイトのダウンロードページにbz2のパッケージがあるのでダウンロード。Windows用にバイナリのパッケージもあるみたいですよ。

パッケージを展開すると、「w3af_console」と「w3af_gui」があります。せっかくだから、GUIツールの方でやってみます。
環境は、Ubuntu10.04です。

とりあえず実行権限をつけて起動すると、色々パッケージが足りないと言われたので、その通りにインストール。



$ sudo apt-get install nltk SOAPpy libxml2 pysvn scapy


再度起動すると、



You have to install graphviz library.


ライブラリが足りないみたいです。インストール。



$ sudo apt-get install graphviz


再度起動すると、スプラッシュが出ました。



テストしてみる

続いて、GUIウインドウが出てきたので、左上のボタンからウィザードに従って入力。
今回はshort wizard、ローカルにあるLAMPP環境でテストしてみます。




といっても、URLとOS、検証する言語を選択、最後にプロファイル名を入れれば準備完了。




あとはチェック項目をONにしてとりあえず、Run。
どれがどの項目なのか分からないので、「audit」、「grep」、「mangle」あたりにチェックを入れました。
(discovery)にチェックを入れると、「すっごい時間かかるかもよ!」というダイアログが出たのでやめました)

お試し用のスクリプトはこんな感じ。



  
  
  
  <div>
    <?php echo @$_GET['id'];?>
  </div>
  


良い子は真似しちゃダメなコードです。

で、スタートすると、結果や情報がログにダーッと出て、終了後に「Results」のタブから結果が確認できます。
簡単なスクリプトならいいですが、それなりなアプリケーションを検証すると、かなりマシンパワーを使う感じです。
あと、エラーが出ちゃう場合はそこで止まってくれるので、エラー検出にも使えそうな印象です。

結果を見ると、あれ、、、XSS脆弱性の指摘がされないですね。オプションのチェック項目が悪いのかもしれませんね。
でもちゃんとDirectoryIndexできちゃうよ、とかの警告はしてくれました。
あとxstの警告が出まくったので、設定を修正したりしました><

実際にリクエストするコードを吐き出せる

w3afの面白い所は、まずい箇所があったときに実際にリクエストを送るコードをhtml, Ruby, Pythonなどのいろんなフォーマットで吐き出せる所だと思います。
それを保存して、実際にリクエストを送ったりできますし、w3af上でリクエストヘッダを変えながら検証したりできるみたいです。

感想

もうちょっと使い込んでみたいと思います。あと英語も勉強しないといけないですね。
seezooで試したら30分くらいガリガリ回って、エラーはありませんでした。オプションの設定次第かもしれませんが・・・。