Tomcatはどこまで“安全”にできるのか?(5)

無料でWebアプリにありがちな
脆弱性を調べて治す


株式会社アメニクス
x-lab チーム
2008/3/5


今回の主な内容
Webセキュリティを調べる無料ツールとは?
ありがちな脆弱性(XSS)を調べてみよう
クロスサイトスクリプティングを解消するには?
コラム 「注意! 文字のエスケープも
   完全な方法とはいえません」

脆弱性を見逃さないためには

 前回の「Tomcatのセキュリティとリスクの基本分かってる?」ではTomat自体が持つ脆弱(ぜいじゃく)性について調べていきましたが、今回はWebアプリケーションのセキュリティについて調べていきましょう。

Webセキュリティを調べる無料ツールとは?

 Webアプリケーションが持つ脆弱性はいくつか存在しますが、前回の説明にあった「インジェクション系」や「クロスサイトスクリプティング」(XSS)などが有名です。それ以外にも「パラメータ改竄(かいざん)」や「セッションハイジャック」といった脆弱性が一般的にはよく見つかります。

 このような脆弱性は特定の手法で見つかることはよくありますが、すべての手法を人が覚えて実行するのは大変です。設定のミスまで自分で探すのはとても大変なことで、常に最新の情報を追っていくことも困難であるといえます。

 そんなときどうすればいいか? いまは非常に便利な「代行してくれるツール」が開発され、公開されているので、これを利用してチェックしてみましょう。今回はオープンソースWebセキュリティ・スキャナNikto」を利用します。

図1 Niktoのページ
図1 Niktoのページ

Niktoのセットアップ

 「Nikto」のページを開くと、画面上部に「Download」の項目があります。クライアントに環境設定するのは大変なので、今回のツールもサーバ上に導入しましょう。

 まずは、圧縮形式「.gz」を利用するので「.gz」のリンク先をコピーして、サーバ上でwgetを利用してファイルを取得します。

# wget http://www.cirt.net/nikto/nikto-current.tar.gz

 ファイルのダウンロードが完了したら、圧縮ファイルを解凍しましょう。

# tar xzf nikto-current.tar.gz

 解凍したファイルは「Nikto-【バージョン】」という名前のディレクトリとして解凍されるので、まずはディレクトリ名を調べてみましょう。

# ls
nikto-2.02

 ディレクトリ名が「nikto-2.02」になっていることを確認しました。それでは、この解凍したNiktoを適当な場所に設置しましょう。

# mv -f /tmp/nikto-2.02/ /opt/nikto

 これで、Webセキュリティ・スキャナの導入は完了です。

Niktoを実行してセキュリティ状態をチェック

 それでは、導入まで行ったWebセキュリティ・スキャナを実際に利用してみましょう。Niktoを実行するためには、Niktoを設置したディレクトリに移動します。

# cd /opt/nikto

 まず、脆弱性を調べてみる前に、Niktoの脆弱性情報やプラグインを最新版にアップデートします。アップデートコマンドを実行しましょう。

# perl nikto.pl -update

 実行すると、今回のように現時点の最新版を導入している場合には、アップデートの必要がないために以下のようなメッセージが表示されます。

+ No updates required.
+ www.cirt.net message: Please report bugs ASAP

 もし、前のバージョンで実行していたりすると、Pluginやデータベースの更新と最新版のアナウンスが表示されます。以下は、2.00のバージョンでアップデートコマンドを実行した場合の表示例です。

+ Retrieving 'nikto_headers.plugin'
+ Retrieving 'nikto_plugin_order.txt'
+ Retrieving 'CHANGES.txt'
+ www.cirt.net message: Version 2.01 is released, which fixes some nice bugs. Please update!

 最新版であることも確認できたので、実際にWebアプリケーションの脆弱性を調べてみましょう。

perl nikto.pl -host http://192.168.1.45:8080

 実行すると、以下のような結果が表示されました。

 内容をよく見てみると、いくつかの脆弱性が見つかっているようです。先頭に「+OSVDB」が付いているものが脆弱性で、大きく分けると以下の4種類です。

  1. 利用が許可されているリクエストメソッドの問題
  2. トップページがデフォルトのTomcatの状態であることの検出
  3. Tomcatのデフォルトディレクトリが検出された問題
  4. MyWebServer 1.0.2の脆弱性が見つかった問題

見つかった問題を解析

 これらの見つかった問題を1つ1つ見ていきましょう。

 「1」は、普段利用しないようなPUTやDELETE、TRACEというようなリクエストメソッドまで許可しているので、検出されています。PUTやDELETEはWebdavを利用しているわけでもないので、大きな問題にはならないでしょう。TRACEも、いまの時点で大きな問題はなしです。よって対応は必要なしです。

編集部注WebDAVについて詳しく知りたい読者は、「次世代プロトコルWebDAVの可能性」をご参照ください。

 「2」「3」では、トップページのファイルや初期にあるディレクトリからTomcatを利用していることが検出されました。これは、Tomcatをデフォルト状態から追加を重ねて利用していたために検出されたことなので、実際にサーバを立てるときには新しく設定を作成してこのような問題が見つからないように努めましょう。

 「4」はHTMLインジェクション(XSS)が発見されたかのように見受けられますが、MyWebServer 1.0.2は利用していませんし、実際には誤検出のようです。

 実際には大きな問題は見つかりませんでしたね。今回は最新版のTomcatを利用していることと、汎用のWebセキュリティ・スキャナを利用していたために細かい問題は見つからなかったようです。

 次ページでは、以前作成したCometのチャット・アプリケーションでありがちな脆弱性(XSS)を発生させてみます。

  1-2-3

 INDEX
第5回 無料でWebアプリにありがちな脆弱性を調べて治す
Page1
Webセキュリティを調べる無料ツールとは?
  Page2
ありがちな脆弱性(XSS)を調べてみよう
  Page3
クロスサイトスクリプティングを解消するには?
コラム 「注意! 文字のエスケープも完全な方法とはいえません」
脆弱性を見逃さないためには



Java Solution全記事一覧

TechTargetジャパン

Java Solution フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH