eval() (関数ではなく言語構造) を無効にできない場合、または eval 内にハッカーのツールボックスのほとんどを無効にするブラックリストがある場合、帯域幅を探しているハッカーにとって抵抗できない帯域幅の負荷を実行しています。ペイロードを実行します。サードパーティのモジュール作成者やフレームワークのコアでさえ、eval() コンテキスト内のこれらの関数のいくつかに依存しているため、理想的にはブラックリストに載せることが常にできるとは限りません。
suhosin.executor.eval.blacklist=include,include_once,require,require_once,curl_init,fpassthru,file,base64_encode,base64_decode,mail,exec,system,proc_open,leak,pfsockopen,shell_exec,ini_restore,symlink,stream_socket_server,proc_nice,popen,proc_get_status,dl,pcntl_exec,pcntl_fork, pcntl_signal, pcntl_waitpid, pcntl_wexitstatus, pcntl_wifexited, pcntl_wifsignaled, pcntl_wifstopped, pcntl_wstopsig, pcntl_wtermsig, socket_accept, socket_bind, socket_connect, socket_create, socket_create_listen, socket_create_pair,link,register_shutdown_function,register_tick_function,create_function,passthru,p_open,proc_close,proc_get_status,proc_terminate, allow_url_fopen,allow_url_include,passthru,popen,stream_select
これらの機能をフィルタリングできない場合は、セキュリティの主要コンポーネントが欠落しています。
脆弱なサード パーティ モジュールまたはサイト ユーザー アカウントを介してサイトに感染するリモート管理ツール (RATS) の例を次に示します。
RAT はさまざまな形式をとることができますが、grep で簡単に取得できるものもあります。
<?php error_reporting(0); eval(gzuncompress(base64_decode('eF5Tcffxd3 ...
<?php preg_replace("/.*/e","\x65\x76\x61\x6C\x28\ ...
一部はより専門的で難読化されており、実際には grep できず、実行したことを suhosin が通知しない限り見つけることができません。
<?php $_0f4f6b="\x70\x72\x65\x67\x5f\x72\x65\x70\x6c\x61\x63\x65";$_0f4f6b("\x7 ...
<?php require "./.cache/.%D59C%49AA%73A8%63A1%9159%0441"; ?>
(この場合、CACHE ディレクトリをソース管理に含めることはできないため、追跡することもできません)