先月末からIPAが公開している「脆弱性体験学習ツール」AppGoat。
このAppGoatのキャッチフレーズは「付いてみますか?脆弱性!」。脆弱性が存在するWebやバイナリプログラムに対して、実際に攻撃を仕掛け、どのような挙動となるのかを体験することで攻撃の仕組みや対策を理解できるように構成されています。
AppGoatはスタンドアローンで動作させることを前提に作られていますが、ツールの操作はWebブラウザを通じて行われるので、どうせならWebトレーニングのように特定のサーバーにインストールしてグループで共有して使いまわせないかと考えたので、少し中を覗いてみました。
AppGoatの構成
AppGoatは比較的シンプルな構成で組まれていますが、一般的なWebアプリケーションと同様にWebサーバーやデータベースを内包しており、「展開先\AppGoat01\IPATool\Framework」フォルダに配置されています。
私が確認した内包されているサーバーやテンプレートエンジンは次のものです。
ソフトウェア名 | バージョン | リリース時期 |
Apache HTTP Server | 2.2.14 | 2009/10/05 |
SQLite | 2.8.17 | 2005/12/09 |
PHP | 5.3.2 | 2010/03/05 |
Smarty | 2.6.7 | 2005/02/03 |
パッと見てわかると思いますが、内包しているバージョンが古いですね。中には5年以上前のバージョンも存在しており、AppGoatの元ネタになるような部分は大分前から作られていたということなのでしょうか。いずれにしても、セキュリティFixが以降いくつか出ているはず(具体的な内容は未調査で、手抜きですみません)なので、不用意に公開するようなことは避けたほうが良さそうです。
IPAではソフトウェアの脆弱性情報を自分で流しているぐらいですし、せめて直近半年ぐらいのバージョンを利用してもよさそうなのですが、何故なんでしょうか。
AppGoatを外部公開する
というわけで、外部公開するにあたっては上のリスクを踏まえた上で自己責任で行ってください。
修正個所はApacheのhttpd.confにある
起動時に実行するstart.batの中で、Apacheの実行を行うhttpd.exeを呼ぶ箇所の引数を修正してもよさそうですが、引数の修正自体がごちゃごちゃしいので、confファイルを選択しました。
AppGoatで用いられているhttpd.confファイルは次の場所に格納されています。
「展開先\AppGoat01\IPATool\Framework\Apache2.2\conf」
このhttpd.confファイルの190行目あたりにある
[]についてはご自身の環境に応じて編集してください。
Order deny,allow
Deny from all
Allow from [許可したいIPアドレス/ホスト名]
※ Directoryで指定するAppGoatのパスはウェブアプリケーション版はAppGoat01\、サーバーデスクトップ版はAppGoat02というフォルダ名称になっているので注意してください。
外部公開の範囲はインターネットでの公開は元より、イントラネットであっても無作為にどこからでもアクセスを許可するのではなく、同一のセグメントに限定された方が良いでしょう。またアクセス過多による性能面の問題は今回私は検証していません。(セッション数などは100程度ぐらいまでは設定上問題はないみたいですが)もし問題が出た場合も基本はApacheとPHPなので、その方面の猛者の方に助けてもらいましょう。