自分で調べる!ウェブサイトにおける脆弱性検査手法の紹介

  • セキュリティー

システムエンジニアの観点から自社のウェブサイトは大丈夫??という検証をしてみたいと思います。

1.はじめに

サイトの脆弱性検査は専門の会社に依頼したりしてお金が掛かるものです。特にお客様のサイトやキャンペーンサイトだと第三者機関の専門業者にお願いして、客観的に脆弱性が無いかどうかの「お墨付き」をもらうことが一般的です。
こうなると1回のテストで数十万から数百万円掛かります!!
しかし、自社サイトだったりデモやキャンペーンなどで一時的に公開しているサイトだったりの場合はなかなかそのような手間もお金も掛けられないということがあります。このようなケースにある程度割り切って簡単な検証はできないかということで探してみました。
今回は、ウェブサイト(サービス)だけに的を絞ってみました。
チェックポイントとしては、以下の2点です。

ポイント

  • 余計なポートが開放されていないかどうかのチェック
  • フォームなどにクロスサイトスクリプティング(XSS)の危険性はないかどうかのチェック

2.開放ポートのチェック

自社サイトのサーバーにて、自分の知らないところで外部から勝手に接続が可能かどうかを確認します。
サーバーがLinux (UNIX) の場合は、netstat コマンドで確認できます。

netstat -antu

コマンドを実行します。
(Windows の場合は netstat -ant)
「状態」が「LISTEN」で表示されているポートがサーバーで接続待ちをしている(開放されている)ポートになります。

実行画面

使用していないポートはすべて閉じておきましょう (例えば、メールの送受信をしていないのに25(SMTP)、110(POP3)などのポートが開いているなど)コマンドが判らない場合は、Google などで「ポート チェック」で検索すると外部からのポート開放確認を行ってくれるサービスを利用することもできます。
(ただし、この場合はサーバー上からサービスを利用しないとポートチェックできない場合があります)

ハッカーは開いているポート(すきま)から侵入してきます!!
戸締まりはキチンとですね。

3.クロスサイトスクリプティング(XSS)のチェック

クロスサイトスクリプティング(XSS)は、プログラムの脆弱性(穴)を利用してセッションや Cookie 等の情報を不正に取得したり書き替えたりするものです。
ここでは、XSS の具体的な方法などについての説明は省きます。

XSS の簡単な調べ方は、FireFox のアドオンで「XSS Me」と言うツールがありますので、こちらをサイトからダウンロードして FireFox に入れます。
チェックしたいプログラム(入力フォーム)が入っているページ(サイト)にアクセスします。
ブラウザメニューの[ツール]-[XSS ME]-[Open XSS Me Sidebar]をクリックすると、サイドバーに XSS Meのメニューが表示されます。

[Test all forms with all attacks](全部のテストを実行)
[Test all forms with top attacks](よくあるパターンのテストを実行)

のいずれかを実行します。実行パターンや文字列を増やす場合は[Option]から登録できます。
完了すると、以下のような結果画面を表示します。
検索結果

結果画面にて「Passes」「Warning」「Failures」のいずれかで表示されます。
「Passes」は、脆弱性が見つからなかったことを指します。
「Warning」は、他のブラウザではXSS攻撃の被害を受ける可能性があるもの(他の脆弱性検査ツールでは問題ないと判断されたものが挙げられることがあります)を指しています。
「Failures」は、XSS 攻撃によって被害を受ける可能性がある(脆弱性の対策が必要)ことを指しています。

このテストは、あくまでも簡易的なものなのでこのテストをパスしたから大丈夫と言うことはありません。
(IE6 など古いブラウザのみで発生する XSS の脆弱性は発見できません)
最終的には専門のペネトレーションテストを受けて脆弱性の有無を確認することをお勧めします。

4.その他のチェックツール

「OWASP ZAP」

OWASP(Open Web Application Security Project)が提供しているWEBサイトの脆弱性を診断するための(オープンソースの)ぺネトレーションテストツールです。無料で使用できます。

  • クロスサイトスクリプティング(反射型)
  • SQLインジェクション
  • CRLF インジェクション
  • パラメータタンパリング
  • パストラバーサル

の診断ができます。
ツールで脆弱性が検出されなければ安全という訳ではありませんが、1つのチェック手段としては有効です。

「SQL Inject Me」

SQL インジェクションを簡単に調べることができる FireFox のアドオンツールです。

5.最後に

ペネトレーションテストツールは脆弱性を発見してくれるとても便利なツールです。
ただし、その用途はあくまで自分で作成したサイトやサーバーをチェックするためのものです。
他人のサイトやサーバーを勝手にチェックするのには絶対に使用してはいけません。
相手によっては、サイトへの攻撃と見なされてしまいます。

また、脆弱性は日々発見・更新されていきます。つまりハッカーとメーカー(開発者)のイタチごっこです。
(最近も OpenSSL の脆弱性が見つかったばかりですね)
脆弱性が見つからなかったから安心ではなく、新しい脆弱性が発見されたら一度自分のサーバーは大丈夫なのか疑って調べてみることが大事です。
ただし、脆弱性が見つかった=即攻撃されると言う訳ではありませんので、脆弱性を気にしすぎて夜も眠れないという状況に落ちないようにしましょう。