クライアントは定期的に私に電話をかけて、バックアップされていないPHPマルウェアに感染したサイトを、制御できないホストサーバーで駆除します。
シェルアクセスを取得できる場合は、実行するために作成したスクリプトを次に示します。
( set -x; pwd; date; time grep -rl zend_framework --include=*.php --exclude=*\"* --exclude=*\^* --exclude=*\%* . |perl -lne 'print quotemeta' |xargs -rt -P3 -n4 sed -i.$(date +%Y%m%d.%H%M%S).bak 's/<?php $zend_framework=.*?>//g'; date ; ls -atrFl ) 2>&1 | tee -a ./$(date +%Y%m%d.%H%M%S).$$.log`;
しばらく時間がかかる場合がありますが、変更するのはトロイの木馬の署名を含むPHPファイルのみです。<?php $zend_framework=
感染した.php
バージョンのバックアップを作成.bak
して、再スキャンしたときにそれらをスキップするようにします。
シェルアクセスを取得できない場合、たとえば。FTPのみの場合、基本的にphpが実行するコードを含む短いcleaner.phpファイルを作成しますが、多くの場合、Webサーバーはすべてのサブディレクトリを通過する前にスクリプトの実行をタイムアウトします。
問題の回避策:
私はこれをcrontab/atjobに入れて実行します。サーバー上で直接プロセススケジューリングにアクセスできる場合は12時間ごと、それ以外の場合は、許可されている内容に応じて、より複雑なアプローチもあります。ときどき外部からクリーナーphpを呼び出しますが、経由するたびに異なるフォルダーで開始するようにしますsort --random
(60秒ほど後にWebサーバーによって終了されるため)。