Вирус на сайте WordPress

Сегодня пришлось немного повозиться с поиском вируса на сайте под управлением CMS WordPress.

Чаще всего о вирусах на сайте я узнаю из Webmaster Tools или от хостинга. В этот раз сообщение пришло от гугла:

virus01

 

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

Первое, что я сделал, скачал полный архив сайта на локальную машину и проверил файлы сайта антивирусом. Очень хорошо для этого подходит Dr.Web CureIt.

Просканировав сайт CureIt сообщил, что нашел PHP.Siggen.16, ESET тоже нашел проблему, но назвал ее PHP/Obfuscated.E

Зараженным оказался файл index.php в корне сайта, его код выглядел следующим образом:

Я привел не полный листинг, заменив закодированный код словом «Куча кода».

Увидев preg_replace(«/.*/e», сразу стало понятно, что это и есть вирус. О том, что делает данная конструкция написано много статей, поэтому я не буду останавливаться на этом, кому интересно, тот погуглит.

Я заменил файл index.php на не зараженную версию из бекапа, поменял все пароли пользователей в WordPress и спокойно пошел отдыхать.

Обычно этих действий хватает, и проблема больше не возникает.

Наверное у кого-то возникнет вопрос, почему я всего лишь поменял пароли пользователей CMS, а не сменил абсолютно все пароли в системе. Всё очень просто. На этом сайте в первую очередь я грешил именно на пароли пользователей, так как я точно знал, что пароли там очень простые и практически без проблем подбираемые. Так же на этом же сервере есть еще несколько сайтов на WordPress и они небыли подвержены такой болячке, следовательно я сделал вывод, что пароли были получены методом подбора, а файл заражен вручную.

Но, этой статьи не было, если бы на следующее утро проблема не повторилась. И я понял, что надо искать не только сам вирус, но и способ, как это происходит.

Второе, я нашел закономерность появления вируса, это было очень просто. Сразу после того, как я чистил index.php и обращался к сайту, вирус опять прописывался index.php. Это говорило о том, что механизм заражения уже прописан в системе.

Что бы понять где именно находится вирус, я решил действовать методом исключения, сначала отключил все плагины, но проблема повторилась, после этого я поменял тему и проблема пропала. Файл index.php перестал заражаться, это сфокусировало меня на теме сайта.

После этого механизм был очень быстро обнаружен, он находился в файле 404.php. У файла очень отличалась дата изменения и в коде присутствовал eval(base64_decode(.

virus02

Методом многократного декодирования я получил следующий код

Именно этот код и производил заражение сайта.

Теперь осталось все почистить и понаблюдать некоторое время за сайтом.

Похожие материалы:

Поиск вирусов на сайте при помощи AI-Bolit

Перенос сайта WordPress на другой домен

Вирус на сайте WordPress: 2 комментария

  1. Евгений

    Иван, здравствуйте.

    Я бы хотел с вами проконсультироваться по вопросу безопасности веб-сайтов на WP, как с вами можно связаться?

    С уважением,
    Евгений

Добавить комментарий для Евгений Отменить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *