カイワレの大冒険 Third

技術的なことや他愛もないことをたまに書いてます

PHPでこんな情報が表示されるって知ってますか?

Linux Mintでapt-get upgrade, dist-upgradeが終わらないので、一つ記事でも。

今の時代、PHPが実行可能なサーバは多いと思いますが、そんなサーバを運用している方へ、こんな情報表示されちゃいますよ、という話し。セキュリティにも関わってくるので、知っておきませう。

論より証拠

とりあえず、PHPが動くことが前提で、素のPHPでもいいし、何かすでにフレームワーク等動いてるならその環境下でもよいので、以下のようにしてみませう。とりあえず、素のPHPで。

  • まず、ファイル名はなんでもよいので、適当なPHPファイル(ex: index.php)を作成する。
  • ウェブサーバの設定をもとに、権限を設定し、ウェブサーバ経由で参照できるようにする。
  • たとえば、ブラウザでhttp://www.test.org/index.phpにアクセスできることを確認する

ここまでが下準備。

そしたら、以下のようにファイル名のあとにパラメータを追加する。

?=PHPE9568F34-D428-11d2-A769-00AA001ACF42

なので、http://www.example.orgというサイトのドキュメントルート直下にindex.phpというファイルがあるなら、以下のようになる。

http://www.example.org/index.php?=PHPE9568F34-D428-11d2-A769-00AA001ACF42

こんな感じの画像表示された人はいますでしょうか。

このようなロゴが表示された人は「PHP Easter Egg」というものが有効になっています。

もう少し表示させてみましょう。追加したコードを以下のように変更してください。

?=PHPE9568F35-D428-11d2-A769-00AA001ACF42

この場合は、Zendのバージョン。画像はこんな感じ。

?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000

この場合はクレジット。

どうでしょうか。表示される人もいるかと思います。

それで何が問題なの?

まぁ、クレジットが出る程度なら、かわいいものなんですが、以下のコードに変えてみると話は変わってきます。

?=PHPE9568F36-D428-11d2-A769-00AA001ACF42

手元の5.3で確認すると以下のような画像。

青い象が表示されましたが、PHP Easter Eggこういうところ見ると、環境によって違う動物が表示されたりするわけです。

公式サイト見ても、このEaster Eggに関して言及してる部分がググりきれなかったので、適当にググってもらえればと思いますが、この画像によって、インストールしているPHPのバージョンが外部から分かってしまうということが問題であります。
ということで、OFFにしておきましょう。

方法は、「php.iniのexpose_phpをoffにする」だけです。あとはウェブサーバ再起動して終わり。

終わりに

Apacheインストール後の初期設定とかでApacheのバージョン情報消したりするというのは、気をつけることとしてよく書かれている気がするのですが、このEaster Eggへの言及はそこまで多くない気がするので、自戒も含めて。