Logging

提供: GeeklogJpWiki

ログの扱いについて

ログに出力するものに注意する

PHPインタプリタは,有効なPHPのオープンタグ(<?php や <?)を含んでいさえすれば,ファイルの拡張子が何であれ,どのファイルからでもPHPコードをパースします。PHPタグで囲まれたセクションがありさえすれば,ファイルの残りの部分が何であれ,PHPインタプリタはそのコードをパースし,実行しようとします。

だから,jpgファイルがあり,その途中に<?php echo('hello!'); ?>が含まれていても,PHPインタプリタがそのファイルを開くよう命令されると,その部分をパースして実行します。

Geeklogでは,COM_errorLogを含めて数種類のロギング手段を提供し,管理者が閲覧することができるようにファイルへのデータのロギングを可能にしています。誰かが巧妙な攻撃手段を考案したら,Geeklogシステムのログファイルやプラグインが独自に持つログファイルにPHPコードを出力できるかもしれません。

これらのログファイルはふつう,スクリプトの中にインクルードされることはないので,これは差し迫った問題ではありません。しかしながら,万一,攻撃者が狡猾な手段を用いた場合,Geeklogやプラグインを欺いてPHPコードが混入したログファイルをrequire/require_once/include/include_onceさせ,結果としてインジェクトしたコードを実行することに成功するかもしれません。

Webサーバーがこれらのログファイルに書き込むことができる(し,ふつう書き込む)ということがこの場合,弱点です。これにより攻撃者が独自のコードを挿入する場所が与えられ,システムをさらなる危険にさらすことになります。

!!注意!! 覚えておいてほしいのは,PHPのコードを実行するのは <?php ... ?> だけではないということです。ショートオープンタグの使用を許可すると,<? .. ?>でも動作します。ASPタグの<% ... %>を使用するよう設定することも可能です。また,ログファイルを使用して,ASPスクリプトやColdfusionスクリプトなどそのWebサーバーで利用可能などんなものでも使っても攻撃することは可能なのです。

個人用ツール