Как убедиться, что я полностью удалил взлом WordPress?

10 июн. 2011 г., 15:31:42
Просмотры: 17.9K
Голосов: 110

Мой блог на WordPress для развлечений по адресу http://fakeplasticrock.com (работающий на WordPress 3.1.1) был взломан — на каждой странице отображался <iframe> примерно такого содержания:

<iframe src="http://evilsite.com/go/1"></iframe>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 

Я выполнил следующие действия:

  1. Обновился до версии 3.1.3 через встроенную систему обновлений WordPress
  2. Установил плагины Exploit Scanner (много критических предупреждений о необычных файлах) и AntiVirus (показал, что всё чисто, поэтому я удалил его после проверки)
  3. Сменил пароль MySQL
  4. Сменил все пароли пользователей WordPress
  5. Подключился по FTP и скачал всю файловую систему (небольшой размер, так как это общий хостинг только для WordPress)
  6. Сравнил файловую систему с официальным ZIP-архивом WordPress 3.1.3 и удалил или перезаписал все файлы, которые не совпадали

Я уверен, что:

  • все файлы на диске являются официальными файлами WordPress 3.1.3
  • на диске нет "лишних" файлов, кроме моей /theme, плагина Exploit Scanner (который я только что скачал), папки /uploads и нескольких других ожидаемых файлов. Мой другой плагин, wp-recaptcha, совпадает с текущей официальной версией.
  • Я также проверил файл .htaccess, и там всё выглядит нормально

Сравнение файлов WordPress 3.1.3 в Beyond Compare

Я не трогал базу данных, но мне трудно представить, как что-то в базе данных может быть вредоносным без специального PHP-кода, который бы это активировал?

Сейчас мой блог WordPress выглядит нормально и, кажется, очищен от взлома, но есть ли что-то ещё, что мне следует проверить?

1
Комментарии

Вам следует поддерживать блог в актуальном состоянии. :)

fuxia fuxia
20 июл. 2014 г. 19:49:51
Все ответы на вопрос 12
9
84

Вы определили вектор эксплуатации уязвимости? Если нет, вы можете оставить себя открытым для будущих атак.

Другие моменты, которые стоит учесть:

  1. Изменить пароли администраторов WordPress - выполнено
  2. Изменить пароль пользователя хостинг-аккаунта
  3. Изменить пароли FTP
  4. Изменить пароль пользователя MySQL БД - выполнено
  5. Изменить префикс таблиц БД
  6. Обновить соли/nonce в wp-config
  7. Проверить права доступа к файлам и директориям
  8. Заблокировать просмотр директорий через .htaccess
  9. Проработать все пункты в статье Усиление безопасности WordPress из Кодекса
  10. Проработать все пункты в статье FAQ Мой сайт был взломан из Кодекса
10 июн. 2011 г. 15:58:31
Комментарии

извините, забыл упомянуть — я конечно же изменил пароли WordPress. Обновил пост и отметил в списке здесь! Я не могу представить, как они могли получить мой пароль от хостинга или FTP-пароль, просто получив доступ к WordPress; этой информации нет ни в файловой системе, ни в базе данных.

Jeff Atwood Jeff Atwood
10 июн. 2011 г. 16:18:09

Вы перепутали вероятный вектор атаки; маловероятно, что это было WordPress -> аккаунт хостинга, скорее всего это аккаунт хостинга (через сервер или FTP) -> WordPress.

Chip Bennett Chip Bennett
10 июн. 2011 г. 16:20:28

Я бы добавил "изменить имя пользователя admin". Это должно быть обязательным!

Bainternet Bainternet
10 июн. 2011 г. 16:26:00

@chip как так? Пароли для хостинга и FTP я буквально не использовал 12 месяцев (очевидно, использовал сегодня), и они супер-рандомные, как назначил хостинг.

Jeff Atwood Jeff Atwood
10 июн. 2011 г. 16:31:13

Разве факт, что это shared-хостинг (потенциально), не делает тебя уязвимым к проблемам?

Travis Northcutt Travis Northcutt
10 июн. 2011 г. 16:33:56

@Jeff некоторые эксплойты на уровне сервера ты не можешь контролировать (кроме как найти лучшего хостера). Но то, что ты не использовал хостинг/FTP-креды, не значит, что их кто-то не украл, получив доступ к твоему хостинг-аккаунту.

Chip Bennett Chip Bennett
10 июн. 2011 г. 16:36:49

Очень распространённый эксплойт, который сейчас активно используется, заключается в том, что вредоносное ПО заражает вашу рабочую станцию (или рабочую станцию подрядчика), ищет сохранённые пароли в вашей любимой FTP-программе (или программе с поддержкой FTP) и отправляет их злоумышленнику, который затем взламывает ваш сайт и использует его для распространения того же вредоносного ПО среди других вебмастеров. Это один из распространённых способов, каким ваш FTP-пароль может быть украден. Особо коварно то, что он распространяется через обычные сайты вроде вашего, а не через сомнительные, где вы, скорее всего, будете осторожны.

tylerl tylerl
10 июн. 2011 г. 17:09:03

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

krembo99 krembo99
9 февр. 2014 г. 10:50:43

К вашему сведению, если у вас есть доступ к командной строке, WP-CLI имеет команду verify checksums, которая проверит каждый файл по сравнению с версией на wordpress.org.

William Turrell William Turrell
4 апр. 2015 г. 11:58:00
Показать остальные 4 комментариев
3
26

Если вы видите сообщение Google Chrome о "безопасном просмотре", вероятно, ваш сайт подвергся атаке ".cc iFrame hack", которая в последнее время очень распространена. Думаю, версия 3.1.3 исправит эту уязвимость, но проверьте файл index.php в корне вашего сайта - именно там я обнаруживал взлом, пока не обновил ВСЁ и не сменил пароли.

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

SELECT * FROM wp_posts WHERE post_content LIKE '%<iframe%'
UNION
SELECT * FROM wp_posts WHERE post_content LIKE '%<noscript%'
UNION
SELECT * FROM wp_posts WHERE post_content LIKE '%display:%'
UNION
SELECT * FROM wp_posts WHERE post_content LIKE '%<?%'
UNION
SELECT * FROM wp_posts WHERE post_content LIKE '%<?php%'
SELECT * FROM wp_comments WHERE comment_content LIKE '%<iframe%'
UNION
SELECT * FROM wp_comments WHERE comment_content LIKE '%<noscript%'
UNION
SELECT * FROM wp_comments WHERE comment_content LIKE '%display:%'
UNION
SELECT * FROM wp_comments WHERE comment_content LIKE '%<?%'
UNION
SELECT * FROM wp_comments WHERE comment_content LIKE '%<?php%'

Надеюсь, это поможет!

10 июн. 2011 г. 16:00:39
Комментарии

Я бы добавил SELECT * FROM wp_* WHERE comment_content LIKE '%<?%' и SELECT * FROM wp_* WHERE comment_content LIKE '%<?php%' на всякий случай...

SeanJA SeanJA
10 июн. 2011 г. 16:04:40

О, последнее замечание. Я предполагаю, что у вас подключены Инструменты Google для веб-мастеров к этому домену. После того как вы всё почистите, вы можете отправить запрос из вашего аккаунта в Инструментах для веб-мастеров, чтобы Google перепроверил сайт и убрал предупреждение. Обычно они обрабатывают такие запросы в течение дня. В противном случае вы попадёте в "чёрный список" на добрые 90 дней.

Dillie-O Dillie-O
10 июн. 2011 г. 16:06:09

Нашёл кучу результатов, но это из-за встроенных iframe для Vimeo.

tooshel tooshel
10 июн. 2011 г. 16:19:22
6
20

База данных также может содержать вредоносный код: скрытые учетные записи пользователей или значения, которые выводятся без экранирования. Также проверьте директорию загрузок на наличие файлов, которые там не должны находиться.

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

10 июн. 2011 г. 15:47:11
Комментарии

Разве Exploit Scanner не найдет скрытые учетные записи пользователей?

Jeff Atwood Jeff Atwood
10 июн. 2011 г. 15:52:34

@Jeff Atwood Я бы не стал на это полагаться. Ваша таблица пользователей не такая большая. Вы можете легко прочитать ее без какого-либо плагина.

fuxia fuxia
10 июн. 2011 г. 15:55:31

Я проверил таблицу wp_users и там только 2 строки, обе ожидаемые... ничего необычного в папке /upload (только gif, png и jpeg файлы)

Jeff Atwood Jeff Atwood
10 июн. 2011 г. 16:00:12

@Jeff Atwood Ты смотрел сами файлы или только их расширения? Все эти файлы есть в медиатеке?

fuxia fuxia
10 июн. 2011 г. 16:02:17

Файлы изображений — довольно распространенный метод доставки вредоносного кода. Смотри здесь, и команда проверки тем также сталкивалась с темами, использующими аналогичную уязвимость TIFF.) Так что да: я бы проверил каждый файл, чтобы убедиться, что он является частью медиатеки. (Простой высокоуровневый анализ: проверьте изображения, для которых не определены миниатюры.)

Chip Bennett Chip Bennett
10 июн. 2011 г. 16:16:41

@Chip Bennet Спасибо за интересную статью от Otto — поразительно, на что идут спамеры в своих попытках ;)

TheDeadMedic TheDeadMedic
10 июн. 2011 г. 19:03:52
Показать остальные 1 комментариев
1
13

Жаль, что ваш сайт взломали — похоже, вы отлично справились с восстановлением!

Ваша файловая система выглядит чистой, я бы сказал, что здесь больше ничего не нужно делать.

Плагин Exploit Scanner должен предупредить, если найдет скрипты, iframe'ы, PHP-код (опасно, только если используется eval) или другой подозрительный код в базе данных.

Не уверен, проверяет ли он таблицы помимо записей и комментариев. Может, стоит заглянуть в /wp-admin/options.php на предмет странных настроек.

Также проверьте таблицу пользователей через MySQL-клиент (в базе могут быть пользователи, невидимые в админке).

10 июн. 2011 г. 15:49:16
Комментарии

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

Jeff Atwood Jeff Atwood
6 июл. 2011 г. 07:10:03
1

Проверьте в Google Webmaster Tools две вещи:

  • Убедитесь, что ваш сайт не помечен как скомпрометированный, и запросите пересмотр, если это так
  • Проверьте ваш сайт как Googlebot и убедитесь, что нет спама, который вставляется и виден только Googlebot - примером этого является взлом WP Pharma

Также я бы переустановил тему или проверил её крайне тщательно. Несколько строк PHP могут переопределить основные функции PHP так, что они будут извлекать вредоносный код из базы данных, особенно из таблиц wp_options (ключ/значение)

10 июн. 2011 г. 16:10:41
Комментарии

да, я определенно повторно отправил сайт через Google Webmaster Tools, и теперь, кажется, всё "очистилось".

Jeff Atwood Jeff Atwood
11 июн. 2011 г. 00:38:30
0

Ищите в базе данных через phpmyadmin по запросу "iframe" или сделайте дамп базы данных и выполните поиск по тексту.

Также проверьте наличие скрытых пользователей в таблице users; я видел пользователей в таблицах, которые не отображались в WP Админка >> Пользователи.

Плагин Clean Options « Плагины WordPress покажет, какой мусор от старых и потенциально уязвимых плагинов остался в базе данных.

В вашей теме также отсутствует тег <head>, поэтому я бы проверил это на случай, если вы редактировали тему для удаления вредоносных ссылок.

И стандартные рекомендации: Как найти бэкдор во взломанном WordPress и Усиление безопасности WordPress « Кодекс WordPress

10 июн. 2011 г. 15:58:58
1

"Есть ли что-то ещё, что я должен проверить?" Вам необходимо проанализировать свой процесс и выяснить, как произошло взлом (почти наверняка из-за несвоевременного или некорректного обновления), и исправить не только симптомы, но и первопричину.

10 июн. 2011 г. 16:00:32
Комментарии

Я сомневаюсь, что это связано с отсутствием обновления WordPress (хотя это возможно, просто не вероятно). Сам WordPress почти никогда не является вектором атаки. Обычные векторы — это небезопасная конфигурация хостинга и украденные FTP-данные.

Chip Bennett Chip Bennett
10 июн. 2011 г. 16:03:42
0

Это случилось со мной однажды из-за утечки на mediatemple. Мне пришлось написать плагин для проверки базы данных на наличие внедренных ссылок. Вы можете взять его здесь в виде gist на github.

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

Удачи!

10 июн. 2011 г. 16:01:11
0

Мне пришлось исправлять очень похожий взлом на сайте одного из моих клиентов.

В файловой системе были обнаружены вредоносные скрипты (использующие php base64_decode). Однако база данных также оказалась скомпрометирована - таблицы 'posts' и 'comments' содержали iframe-код, разбросанный по различным записям.

Я бы рекомендовал провести несколько проверок в базе данных, просто для подстраховки. :)

10 июн. 2011 г. 16:11:06
0

Проверьте свои плагины! С начала этого года было выпущено 60 эксплойтов для плагинов с .org, и я подозреваю, что реальное число намного выше, так как никто не занимается этим на постоянной основе.

Вы указали, что у вас всего один плагин, но в нём была обнаружена уязвимость (неизвестно, как долго она существовала, и возможно, это не вектор атаки).

wp-recaptcha-plugin
Эксплойт был выпущен: 2011-03-18
Версия плагина с уязвимостью: 2.9.8

Автор заявил, что переписал плагин в версии 3.0, но не упомянул о исправлении уязвимости.

http://www.wpsecure.net/2011/03/wp-recaptcha-plugin/

История изменений: http://wordpress.org/extend/plugins/wp-recaptcha/changelog/

11 июн. 2011 г. 04:43:24
0

Я использую облачный сервер с случайными номерами портов для SSH и вообще не использую FTP. Пароли крайне сложно взломать. Весь root-доступ полностью запрещен. Согласен, что WordPress вряд ли будет виновником. Еще одна вещь, которую стоит проверить — это незакрытые FTP-сессии, вирусы на вашем личном компьютере (помните, что вы можете загрузить файл на свой сайт, и тот, кто загрузит этот файл, может получить тот же вирус), а также не храните свои пароли на публичных или даже частных сайтах — всегда записывайте их на бумаге, никогда в Word-документах или блокноте.

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

11 июн. 2011 г. 05:50:21
0

Проверьте дату изменения ваших файлов. Ни один файл не должен иметь дату изменения новее, чем ваше последнее редактирование/установка!

Но это также может быть подделано. Единственный способ убедиться – сравнить (например, через хеш-сравнение) все файлы с оригинальными файлами установки.

11 июн. 2011 г. 12:49:56