Directory.php は任意のコードの実行を許可する
[翻訳:関谷 麻美]
2002年3月11日
国際
海外情報
2002年3月11日
概要
Marcus S. Xenakis は、シェルコマンドをサポートする非常に優れた PHP スクリプトを開発した。
"directory.php" スクリプトは "ls" コマンドに基づいており、渡されたパラメータに基づくディレクトリを読む。
このスクリプトのセキュリティ問題は、ファイル・システム上にある任意のディレクトリの閲覧を許可してしまうことだ。さらに、";" のような危険な文字用のフィルターがないことで発生する任意コードの実行を許可する。これは、同じ作者が作成した Unix Manual PHP Script のバグと全く同じである。
Unix Manual PHP Script バグは最近、修正された。
詳細
Marcus S. Xenakis PHP-Scripts は、シェルコマンドの単純コールを頻繁に使用する:
exec("ls -la $dir",$lines,$rc);
これは、非常に簡単なプログラムだが、シェルコマンドのコールが引き起こす危険について取り組んでいない。
影響:
HTTP-Daemon の権利で任意のコードを実行することが可能。
攻略手段:
このスクリプトは"Unix Manual PHP Script" とは反対で、コマンドを入力する際にフォームを提供しない。理由は、あなたが実行したいと考えるパラメータおよびコマンドを含むスクリプトを直接、呼び出す必要があるからだ。
http://www.example.com/directory.php?dir=%3Bmore%20/etc/passwd
上記のURL は、Password File を示す。
http://www.example.com/directory.php?dir=%3Bps+-aux
上記のURL は、全ての動作プロセスを示す。
解決策:
危険な文字(特に";")を取り除くフィルターを実装する。
ベンダーの対応:
ベンダーと連絡をとった。
追加情報
BlueScreen がこの情報を提供した。
[情報提供:SecuriTeam]
http://www.securiteam.com/
《ScanNetSecurity》