Клиенты регулярно звонят мне и проводят дезинфекцию своих незарезервированных сайтов, зараженных 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, затем я создаю короткий файл cleaner.php, содержащий в основном этот код для php для исполнения, но часто веб-сервер останавливает выполнение скрипта до того, как он проходит через все подкаталоги.
ВРЕМЕННОЕ РЕШЕНИЕ для вашей проблемы:
Я положил это в crontab / на работу для запуска, например.каждые 12 часов, если такой доступ к календарному планированию процесса непосредственно на сервере возможен, в противном случае также существуют более запутанные подходы в зависимости от того, что разрешено, например.время от времени вызывая php-файл с чистого кода, но каждый раз заставляя его запускаться с разных папок через sort --random
(потому что через 60 секунд он все равно будет прерван веб-сервером).