
<?php echo `whoami`; ?>
つまり、これは「root」を返していますが、これを防ぐ方法がわかりません。私は WebHost Manager / CPanel を使用していますが、これは複数のユーザー/仮想ホストを作成し、Apache がそのユーザー/グループとしてプロセスを生成することになっています。これは発生していません。
WHM にログインして PHP および SuExec 構成セクションを開くと、設定は次のようになります。
Default PHP Version (.php files) 5
PHP 5 Handler cgi
PHP 4 Handler none
Apache suEXEC on
何が問題なのですか? Apache を root ではなく正しいユーザーとして実行するにはどうすればよいですか?
答え1
各サイトを独自のユーザーとして実行する場合、正しい PHP 5 ハンドラー設定は「CGI」ではなく「suPHP」です。これを変更すると、whoami
個々のユーザーをレポートするようになります。
このオプションを最初に使用可能にするには、EasyApache を実行し、そのプロセス中に「Mod SuPHP」を選択して Apache / PHP を再コンパイルする必要がある場合があります。これは、次の場所で実行されます。
メイン >> ソフトウェア >> EasyApache (Apache Update) またはコマンドライン/scripts/easyapache
答え2
Apache 自体はおそらく apache ユーザーとして実行されていますが、SuExec のおかげで、root が所有する PHP スクリプトは root として実行されます。これが、コマンドがwhoami
root ユーザーを返す理由です。
ドキュメント ルート内のファイルの所有者を「apache」または「www-data」(サーバーが使用する方) に変更すると、同じコマンドでファイルの新しい所有者が返されます。
また、すべての PHP スクリプトchmod 555
とディレクトリがファイルと同じユーザーによって所有されていないことを確認することもおそらく価値があります。これにより、CGI はスクリプトを実行できるようになりますが、PHP スクリプトの 1 つに欠陥が見つかった場合、CGI はスクリプト自体や他のスクリプトを変更できず、どのディレクトリにも新しいスクリプトを作成できなくなります。攻撃者が PHP スクリプトに欠陥を見つけた場合、攻撃者が実行できることはまだたくさんありますが、攻撃を困難にするためにできることは何でも実行することは価値があります。