Удаление вируса на сайте с помощью bash
Приведу небольшой кейс по удалению вирусов на сайте. Для примера, берем заурядный сайт на joomla и начинаем шерстить его на предмет вирусов. Поскольку сайт на joomla 1.5 вероятность НЕ найти вирус на нем «крайне мала». И так по прошествию нескольких секунд поиска в основных уязвимых местах находим первого друга.
В папке ./images/stories/food/index.php находим картинку с расширением php, собственно можно даже не проверяя сказать что это вирус, заглянем внутрь и убедимся в этом.
vim ./images/stories/food/index.php
Собственно что и требовалось доказать. Нам повезло и все тело файла является вирусом мало того он index.php и вероятность что остальные тела тоже будут с таким же именем весьма велики, как правило вирусы с изменяющимся названием файла пишутся куда менее читаемо, посему все что нам остается это убедиться что по всему сайту нет его копий.
Find . -name 'index.php'
Явно их должно быть меньше, давайте откроем еще один файл и проверим его на изменения внутри самого вируса для правильной его идентификации. Для этого откроем два файла явно вирусных
./administrator/includes/pcl/index.php
./modules/mod_feed/tmpl/index.php
Теперь мы можем составить регулярное выражение на основе которого найдем все файлы с этим вирусом. Для простоты я заменил все морфирующие значения.* поскольку у нас и так достаточно много данных, и более строгой регулярки нам не потребуется.
find . -name '*.php' -exec grep -Eo '\$.* = \".*\"\; if.isset.\$_REQUEST' {} \;
Как мы видим, все что попало в выборку, исключительно нужные нам конструкции. Все что осталось, получить список фалов содержащих данный код.
find . -name '*.php' -exec grep -El '\$.* = \".*\"\; if.isset.\$_REQUEST' {} \;
Удаляем эти файлы.
find . -name '*.php' -exec grep -El '\$.* = \".*\"\; if.isset.\$_REQUEST' {} \; | xargs rm -f
Все, удовлетворяющие условию файлы, удалены.
Оставить комментарий