Удаление вредоносного кода с сайта

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

Как узнать что сайт стал жертвой атаки, в ходе которой на него попал вредоносный код? Первое и самое простое - сайт перестал работать или выглядит не так, как должен выглядеть "здоровый" ресурс. Это может проявиться в появлении нежелательного контента или исчезновении Вашего, страницы не загружаются или загружаются с ошибками. К тому же, если Ваш сайт добавлен в Яндекс или Google веб-мастер, Вы с большой вероятностью получите уведомление от этих систем о вредоносном коде. В некоторых случаях об уязвимости Вы можете узнать от своего браузера (скриншот из Google Chrome).

Предупреждение браузера о вредоносном ПО

Крайне нежелательно в таких случаях пытаться открывать страницу дальше.

Ищем вредоносный код на сайте

Разбираться в мотивах человека, который установил на Ваш сайт вредоносный код, а тем более искать его, мы не будем. Наша основная цель - это найти "плохой" код и удалить его. Для начала необходимо просканировать ресурс, чтобы обнаружить все "зараженные" страницы. Это позволяет сузить круг поиска. К примеру, вредоносный код мог быть помещен в виде Javascript скрипта на какую-нибудь отдельную страницу, скажем в содержимое поста или комментарий к нему. В таком случае проблема может быть решена через админку сайта удалением такого кода из содержимого/комментария. В противном случае, приходиться искать его в исходном коде Вашего ресурса.

Для сканирования сайта на предмет уязвимостей можно воспользоваться https://sitecheck.sucuri.net В итоге можно увидеть следующее:

Сканирование сайта

Как видно из скриншота, "плохой" скрипт обнаружен на нескольких страницах сайта, поэтому придется поискать его в исходном коде.

<script language='JavaScript' src='http://googleleadservices.cn/statistics1.js'>

Получить доступ к исходному коду сайта можно несколькими путями:

  1. Самый простой способ - через админку сайта. В Wordpress например, "Внешний вид" -> "Редактор". Такой способ не совсем удобен из-за отсутствия поиска по содержимому файлов, поэтому приходится очень тщательно просматривать их все по отдельности и искать "плохой" скрипт.
  2. Многие блоги, корпоративные ресурсы, интернет-магазины расположены на серверах, к которым можно получить доступ через панель управления хостингом. Зачастую такой панелью является cPanel. Для получения доступа необходимо знать логин и пароль. Они обычно высылаются при покупке хостинга лицу, совершающему сделку. После входа в панель управления можно просмотреть абсолютно все исходные файлы через "Диспетчер файлов" и попытаться найти те, которые содержат обнаруженный вредоносный скрипт.
  3. Самый удобный способ - через FTP-клиент. Если Вы "общаетесь" со своим ресурсом с помощью FTP-клиента, то без труда сможете запустить поиск по содержимому исходных файлов.

Общие рекомендации по поиску

Не пытаетесь найти вредоносный код в исходных файлах Вашего сайта, подставив его в поиск полностью. Выделите его уникальную часть, как например googleleadservices.cn в нашем случае, и повторите поиск несколько раз.

Удаление вредоносного кода

После обнаружения вредоносного кода его просто необходимо удалить. В нашем случае сайт работал под Joomla, а "плохой" скрипт был вставлен в index.php в корневой директории. Именно поэтому уязвимость была обнаружена сразу на нескольких страницах, так как данный index.php используется при построении всех страниц ресурса.

Сразу после удаления вредоносного кода я рекомендую изменить пароли всех пользователей в панели управления сайтом, а также попытаться найти опыт других администраторов, столкнувшихся с данной проблемой. Возможно необходимо будет принять какие-то дополнительные меры.

Профилактика

Всегда лучше предупредить, чем лечить, поэтому я рекомендую:

  1. Использовать "хорошие" пароли для все пользователей сайта (длинные, с цифрами, заглавными и прописными буквами).
  2. Серьезно относиться и фильтровать контент, который генерируется на сайте не Вами (гостевые посты, комментарии).
  3. Не ждать уведомлений, а периодически сканировать сайт на наличие уязвимостей.
  4. Своевременно обновлять систему управления сайтом (Wordpress, Joomla, Drupal, ...).

С вопросами и замечаниями прошу в комментарии.