検索
連載

Q.E.D.――セキュリティ問題を解決するのは「人」セキュリティ対策の「ある視点」(17)(1/3 ページ)

なんでもない穴でも「合わせ技一本」につながるのがセキュリティの世界。ペネトレテスターによる報告手法3部作、これにて証明完了。

Share
Tweet
LINE
Hatena

セキュリティにおける「合わせ技一本」

 前回「たった1つの脆弱性がもたらすシステムの“破れ”」の最後に、ペネトレーションテストにおける評価軸、脆弱性の指標を解説し、たった1つでも高い危険度の指摘事項があった場合、それが「ウイークリンク」となり、システム全体の評価を押し下げるということを解説した。

 しかし、世の中のもののほとんどに「例外」が存在するように、ペネトレーションテストの結果の判断でも「例外」と呼ぶべきものが存在する。それはどのようなものか。筆者は、例え話が好きなので、ここでは柔道の技の判定に例えてみよう。

 柔道の技は、「一本」、「技あり」、「有効」と3つの判定で評価される。「一本」は「一本勝負」とよくいわれるように、この評価の技を決めた選手は試合の残り時間にかかわらずその勝負の勝者となる。そして、「技あり」は2度取ることで「一本」とされる。また、「技あり」の準ずる判定の「有効」については、何回取っても「一本」にはなり得ず、試合時間内に「一本」がでなかったときの優劣を決める要素の1つとなる判定である(柔道も勝負ごとであるので、このような計算だけではなく「有効」でも相手へのプレッシャーにはなることが考えられる)。

 さて、これをペネトレーションテストの指摘における危険度に置き換えて考えてみよう。

 なんらかの脆弱性や推測可能なパスワードを用いて、検査対象に管理者権限侵入した場合、その時点で危険度は「5」、検査対象の評価は「D」となることは前回解説した情報からお分かりいただけるだろう。

 それでは、「技あり」はどうだろうか。実際のペネトレーションテストで情報収集を行い、貫通までの流れをもとに話を進めていこう。検査経路はインターネット経由という前提で読み進めてほしい。

 以下、筆者が経験から、一部を脚色をした形で紹介する。

1.ポートスキャン

 以下はポートスキャンの結果である。

図1 ポートスキャンの結果
図1 ポートスキャンの結果

 インターネットを経由しているため、ファイアウォールの設定により必要最小限のポートのみが開放されていると判断ができる。開放が認められたポートから、検査対象はWebサーバであると容易に推測できる。

2.バナー取得

 開放ポートがtcp/80とtcp/443であることから、Webサーバであると推測できた検査対象だったが、ブラウザにてhttpおよびhttpsでアクセスすると問題なくWebコンテンツが表示されたことにより、検査対象でWebサーバが稼働しているということが判明した。

 次に行うものは、第1回「たった2行でできるWebサーバ防御の『心理戦』」でも紹介したバナー情報の取得である。以下は、バナー取得を行った結果である。

図2 バージョン情報を取得
図2 バージョン情報を取得

 バナー情報の取得から検査対象が「Microsoft-IIS/6.0」であることが判明した。

3.ディレクトリスキャン

 次に、辞書をもとに存在しそうなディレクトリを探し当てる「ディレクトリスキャン」を行う。結果の中から気になるものとして「webdav」「phpmyadmin」というディレクトリが発見された。

図3 ディレクトリスキャン結果。表示されたディレクトリ名に注目
図3 ディレクトリスキャン結果。表示されたディレクトリ名に注目

 「webdav」というディレクトリが存在することから、この検査対象上ではWebDAVが有効になっているということが推測される。念のため、OPTIONメソッドを発行した結果は以下の通りである。

図4 OPTIONSメソッドで許可されているメソッドを確認
図4 OPTIONSメソッドで許可されているメソッドを確認(クリックで拡大します)

 許可されているメソッドから、WebDAVが稼働していると見て間違いないと判断できる。

 また、「phpmyadmin」というディレクトリが存在することからWebコンテンツのバックエンドで動作しているデータベースを管理するインターフェイスが稼働していることが考えられる。

 そしてもう一度図3を見てほしい。発見されたディレクトリ名が列挙されている「Directory Stucture」(StuctureはStructureのミスタイプだろう)の横の項目である「Responce Code」の部分である。3けたの数字が並んでいるが、これはHTTPリクエストを送信した際のサーバの返答である。

 レスポンスコード(ステータスコード)は、相当な数があるため、ここでは、表示されている「200」と「401」の意味のみを簡単に解説しておこう。

 「200」は「OK」を意味し、リクエストした内容は成功したという意味である。つまり、Webサイトを閲覧する場合、入力したURLが問題なく処理されコンテンツが表示される状態を表す。

 「401」は「Unauthorized」を意味し、認証が必要なコンテンツへのアクセスの際に認証に失敗したことを表している。

 「401」は認証情報が必要であることが判明しているため、ひとまずあとまわしとし、「200」を返した「phpmyadmin」ディレクトリにアクセスを試みた結果は下図である。

図5 phpMyAdminの認証画面
図5 phpMyAdminの認証画面

 ご覧の通り、管理画面にはアクセスできるものの、そこから先のアクションを行うには認証が必要だ。推測でき得る限りのものを試すも失敗、そう簡単に突破できるようなパスワードを設定していないようである。

Copyright © ITmedia, Inc. All Rights Reserved.

       | 次のページへ
ページトップに戻る