Вирусы и шелл для WordPress

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

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

Зайдя в понедельник 18.02.2013 в CPanel, я обнаружил, что по данным Resource Usage-ера потребление виртуальной памяти увеличилось до максимальных 2 Гб. Причем — увеличилось еще два дня назад, в субботу, в конце дня. Тихо офигев от такого дела, я отправил запрос к своему Хостеру Fozzy.com, с просьбой посмотреть, что произошло, и прибить скрипт, вызвавший утечку памяти. Ребята сработали не только супер-быстро, но и сделали гораздо больше, чем я просил. Они протестировали сайт встроенным антивирусом ClamAV, и обнаружили целый палисадник шеллов, вирусов, троянов и бэкдоров в одной из директорий темы сайта (кэшевой), после чего отправили их все в карантин. Проблему это решило только частично, поскольку стали постоянно появляться новые. На следующий день я сел за решение этой проблемы.

Итак, жил я не тужил, полностью уверенный, что если вход по фтп защищен надежным паролем — то взломать сайт крайне тяжело. Это, по всей видимости, так и оказалось. Никаких следов проникновения по фтп зафиксировано не было, как и входов в админку сайта. Т.е. сам по себе сайт выстоял. Сломали только пароль к базе данных, лежащий в wp-config.php. Однако, нашлась дыра — или в теме, или в одном из установленных плагинов, или в самом вордпрессе, через которую в директорию сайта были закачаны php скрипты. Начал анализировать, достал бэкап еще до переезда к Фоззи. Заглянул в директорию темы — и обнаружил, что один из файлов вируса там уже присутствует. Слава богу, только один. Значит, сидел и ждал своей очереди более трех месяцев, чего-то по тихому делая. А я-то удивлялся — почему у меня среднее потребление виртуальной памяти зашкаливает за 200 Мб. Вывод второй — восстановить все из бэкапа не получится, т.к. там он тоже присутствует.

Ну чтож — надо решать проблемы последовательно. Первым делом — скачал тему, использующуюся у меня, с сайта ее авторов. Сравнил все файлы, что лежат у меня на сайте, и в скачанном архиве. Из тех, что отличаются, отобрал все те, в которые изменения вносил я, просмотрел их на предмет каких-либо еще изменений в коде, вызванных вирусом/враждебным вмешательством. Скопировал все те файлы, которые когда-либо редактировал я, в каталог со скачанной темой, заменив ими исходные файлы темы. Таким образом, получил чистую от вирусов тему, но с файлами, которые изменялись на протяжении жизни сайта только мною. После этого, скачал новую версию вордпресса, с ней проделал ту же самую процедуру, включая все файлы в корне, типа robots.txt. Скачал всю директорию wp-content/uploads/, на всякий случай просмотрел на наличие подозрительных файлов, ничего не нашел, выкачал последний бэкап базы данных (вот тут, конечно, может быть засада — просмотреть, не внесены ли изменения и в нее, и найти их — задача уже просто непосильная). После этого — стер все содержимое директории www (она же public_html). Т.е. абсолютно все. После этого — уничтожил пользователя и базу данных на сервера. Написал письмо на хостинг, с просьбой убить все процессы, запущенные от моего аккаунта. После того, как пришло письмо, что они были убиты — потребление виртуальной памяти упало практически до нуля, что свидетельствовало о том, что вируса не осталось. Поменял все пароли на фтп, панель хостинга, базу данных. Создал новую базу данных, закачал в нее последний бэкап. По phpMyAdmin зашел, и поменял пароль для админа сайта. Закачал по Фтп Вордпресс с моими файлами, изменив в wp-config.php все данные по входу; папку темы, изменив ее название, и папку с uploads. Зашел в админку сайта, параметры-постоянные ссылки, и сохранил, соответственно — обновив .htaccess. Установил только пару самых важных плагинов, чтобы посмотреть — как все будет работать, защитил директории на просмотр. Поставил новый — timthumb.php — об этом ниже.

Пока эти два дня полет нормальный, никаких новых вирусов/доступов к сайту зафиксировано не было, что по всей вероятности говорит о том, что дыра была не в вордпрессе, а в одном из плагинов или теме. Я грешу на timthumb.php из темы — поскольку использовавшаяся версия 1.30 была подвержена уязвимости (как показал плагин Timthumb Vulnerability Scanner). Но пока еще понаблюдаю, до этих пор новые плагины устанавливать не буду. Все найденные мною эксплоиты/шеллы выложу чуть позже в rar-архиве, может кто разбирающийся посмотрит и подскажет, что там к чему. Если попадутся какие пароли — все они уже не актуальны.

Ну и еще раз спасибо Фоззи — в какой раз уже оперативно помогают с решением проблем, за смешные 120 рублей в месяц (это у них стоимость хостинга такая, проблему они вообще бесплатно локализовали). Если бы знал о них до того, как запустил сайт на R01, то сразу бы у них брал хостинг, и не мучался бы потом с переездом.

You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
5 комментариев
  1. Здравствуйте.Как все-таки можно найти вирус,не делая замены всех файлов(на такой подвиг я не способна). Активность внутри сидящего вируса настолько увеличилась,что хостинг меня хочет отключить. Я сделала все,что можно(оптимизация сайта и закрытие ботов и ip адресов),единственно,что не могу определить причину огромного количества ip зарубежных адресов(что-то их привлекает). Но огромное количество(нагрузка) у меня вот таких обращений в файле eror log: [Mon Jul 15 21:57:40 2013] [error] [client 2a03:6f00:1::5c35:7427] client denied by server configuration: /home/-/—/public_html/wp-cron.php
    Хостинг мне ответил после 6 дней настойчивых намеков,что это их сервер нагружает мой сайт,они ответили: «Указанный вами ip-адрес принадлежит нашей компании и соответствует серверу,на котором ваш аккаунт расположен. Большое количество подобных запросов может свидетельствовать о наличии зацикливаний в процессе работы вашего сайта или о некой вредоносной активности.»
    Но,помочь они ничем не могут,типа справляйся сама.
    1.Что может провоцировать сервер обращаться к файлу wp-cron каждую секунду?
    2.что мне сделать,чтобы иностранные ip не рвались к папке public_html (видимо там вирус.код)
    Заранее спасибо за любую подсказку.

    • Добрый день, Галина,

      Про Айболит Вы уже сами прочитали. К wp-cron идет обращение, как только кто-то заходит или обновляет какую-либо страничку — если посетителей много, то раз в секунду это многовато, но допустимо. Хотя и с вирусом это тоже может быть связано. Тестируйте айболитом, если в панели управления хостингом антивируса нет. Если найдет что — блокируйте, удаляйте, пишите на хостинг, чтобы убили все процессы, снова тестируйте.
      А что за хостинг-то, и какая панелька используется?
      Пароль вы как-то интересно поставили — я, к примеру, к вам на сайт зайти не могу. Проверьте, пожалуйста.
      Иностранные IP — вряд ли удастся их все забанить. Ну рвутся, ну чего делать. Вот недавно у меня по 600 обращений было к админке сайта, вот именно они и банились. А до того, как сделано обращение — вы вряд ли узнаете, принадлежит этот IP нашим сетям, или зарубежным. Не весь же интернет блокировать…

  2. Здравствуйте,Дмитрий.Да,про пароль я уже увидела,что некорректно встал,но он у меня уже был на папку public_html, и стоял корректно(только для меня и спаммеров),а при смене пароля почему-то вот так встал,пришлось удалить,чтобы посетителей не потерять.Хостинг Таймвеб. Объявил через пару дней после этой записи,что у него ДНС атака и 1 день хостинг был отключен,может не весь,а только тот сервер,куда скидали все сайты,такие как мой.Однако и после атаки держали отключенным сервер еще 4 дня.У меня на сайте полный обвал(было 0 посетителей). Сейчас (спустя 2 дня) стала повышаться посещаемость,но и нагрузка  опять растет.И в основном,опять обращение самого сервера к сайту,к файлу wp-cron. Может поставить везде,где можно в WordPresse статичные коды,только я в этом не очень разбираюсь.Вот ,например,обращение к версии или кодировке.Нашла у вебмастеров такие коды,проблема только в том,что в моем шаблоне они прописаны как-то по-другому. Может боты слишком быстро листают страницы сайта,так я 10 сек. поставила в роботсе. Может еще что-то посоветуете?  Понять бы ,что это,а Таймвеб ничего мне отвечает,или отписываются или игнорируют вопрос,типа надоела,тетка,со своими дурацкими вопросами.

    • У таймвеба, насколько я понимаю, своя собственная панелька, и антивирус отсутствует. Проверка айболитом что-нибудь дала?

      Как вы определяете, что нагрузка большая — 502/503 ошибка вылезает, или что? Есть какой-нибудь отчет по проценту используемых мощностей?

      Если у вас не используется никаких крон-процедур (отложенных публикаций, автобэкапа, ну или любых других автоматических операций) — попробуйте заблокировать wp-cron, как описано здесь. Посмотрите, как изменится ситуация. Если есть автоматические процедуры — заблокируйте, и поставьте его на исполнение в заданное время, как описано здесь. И тоже самое — посмотрите, как изменится ситуация.

Добавить комментарий

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


Subscribe without commenting

QR Code Business Card