連載
» 2008年03月05日 00時00分 公開

Tomcatはどこまで“安全”にできるのか?(5):無料でWebアプリにありがちな脆弱性を調べて治す (1/3)

[x-labチーム,株式会社アメニクス]

 前回の「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

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

- ***** SSL support not available (see docs for SSL install instructions) *****
---------------------------------------------------------------------------
- Nikto 2.02/2.03 - cirt.net
+ Target IP: 192.168.1.45
+ Target Hostname: 192.168.1.45
+ Target Port: 8080
+ Start Time: 2008-02-29 1:12:01
---------------------------------------------------------------------------
+ Server: Apache-Coyote/1.1
- Allowed HTTP Methods: GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS
+ OSVDB-397: HTTP method ('Allow' Header): 'PUT' method could allow clients to save files on the web server.
+ OSVDB-5646: HTTP method ('Allow' Header): 'DELETE' may allow clients to remove files on the web server.
+ OSVDB-877: HTTP method ('Allow' Header): 'TRACE' is typically only used for debugging and should be disabled. This message does not mean it is vulnerable to XST.
+ OSVDB-0: GET // : Appears to be a default Apache Tomcat install.
+ OSVDB-3233: GET //admin/ : Tomcat is installed, however the administration package does not appear to be.
+ OSVDB-3092: GET //admin/ : This might be interesting...
+ OSVDB-3268: GET //docs/ : Directory indexing is enabled: /docs
+ OSVDB-6659: GET //9vfYL4IzXp4dPMLFiQ61AxoHnUH8H4o4ooKwyD2WGUZe6s2t6ZebbxnnHEv9NzilCOvr90krdHRn6DilsRbL2fpPV3vzmCIzwYksQSG2a2rZPAo944WDKfhNjVnV9Gul1LqGnJZjpqQooiJwcgZnNBgOvmrItusFWqKxLEFkH2UDXKwUig6WbWIdMiV31mUtZeJzwVDZ7jSsSn8iFlWJQZgMbkGQQLm<font%20size=50>DEFACED<!--//-- : MyWebServer 1.0.2 is vulnerable to HTML injection. Upgrade to a later version.

+ 2967 items checked: 9 item(s) reported on remote host
+ End Time: 2008-02-29 1:13:01 (31 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

 内容をよく見てみると、いくつかの脆弱性が見つかっているようです。先頭に「+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 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。