質問: 悪用可能なphp関数 任意のコードの実行に使用できる関数のリストを作成しようとしています。目的は、ブラックリストに登録するか、許可しない機能をリストすることではありません。むしろ、侵入先のサーバーでバックドアを検索するときに便利なred-flagキーワードのgrep- ableリストが必要です。アイデアは、多目的の悪意のあるphpスクリプト(c99やr57などの「webシェル」スクリプトなど)を作成する場合、1つ以上を使用する必要があるということです。ユーザーが任意のコードを実行できるようにするために、ファイル内のどこかにある比較的小さな関数のセット。これらの関数を検索すると、何万ものphpファイルの干し草の山を、より詳細な調査が必要な比較的小さなスクリプトセットにすばやく絞り込むことができます。たとえば、明らかに、次のいずれかが悪意のある(またはひどいコーディング)と見なされます。<? eval($_get['cmd']); ?> <? system($_get['cmd']); ?> <? preg_replace('/.*/e',$_post['code']); ?> などなど。先日、侵害されたwebサイトを検索しても、preg_replaceフラグ(を使用することで/eが危険にさらされる可能性があることに気付かなかったため、悪意のあるコードに気付きませんでした。 ?なぜそこにも?)。私が逃した他のものはありますか?これまでの私のリストは次のとおりです。シェル実行 system exec popen backtick operator pcntl_exec php実行 eval preg_replace(/e修飾子付き) create_function include [_once]/require [_once](エクスプロイトの詳細については、マリオの回答を参照してください) ファイルを変更できる機能のリストを用意しておくことも有用かもしれませんが、99%の時間にエクスプロイトコードに上記の機能の少なくとも1つが含まれると思います。ただし、ファイルを編集または出力できるすべての機能のリストがある場合は、投稿してください。ここに記載します。 (そして、私はmysql_executeを数えていません。それは別の種類のエクスプロイトの一部だからです。)
回答: セキュリティの目的でプロバイダが無効にする機能のリストを次に示します。 幹部 dl show_source apache_note apache_setenv クローズログ debugger_off debugger_on define_syslog_variables escapeshellarg escapeshellcmd ini_restore openlog パススルー 閉める pcntl_exec ポペン proc_close proc_get_status proc_nice proc_open proc_terminate shell_exec syslog システム url_exec