Безопасность WordPress: один кейс вместо тысячи советов

Виталий Капля Статьи 19 февраля 8 мин 19

«12 сайтов — один пароль. Нуль усилий со стороны хакера — нуль шансов со стороны владельца»

История, которая может случиться с кем угодно

Недавно чистил массовое заражение двенадцати WordPress-сайтов, которые жили на одном хостинге. Кто-то добавил страницы, которых никогда не было. Где-то появились файлы с непонятными названиями. Google начал показывать в поиске под этими доменами контент об онлайн-казино и криптовалютных схемах. Сами сайты едва дышали, работали через раз, а хостер был на шаг от того, чтобы заблокировать их полностью.

Работа была интенсивная, результат — чистые сайты и куча выводов, которыми стоит поделиться.

Анатомия взлома: что мы нашли на сервере

Когда я получил доступ к серверу, картина была… показательной. Все двенадцать сайтов жили на одном виртуальном хостинге (shared hosting), под одним системным аккаунтом. Один пароль — и атакующий получил доступ ко всему. Как единый ключ от двенадцатиквартирного дома.

Что было дальше? Наливайте чай, садитесь удобнее — потому что список того, что мы там нашли, впечатляет.

Doorway-страницы — 182 штуки

По всему WordPress — в wp-admin, wp-includes, wp-content — появились папки с числовыми названиями, внутри которых лежали index.php файлы. Это так называемые doorway pages — страницы-привидения, которые существуют только для поисковых роботов. Google индексирует их, видит «трастовый» домен и начинает показывать спам в поисковой выдаче. Владелец сайта может месяцами не знать, что его домен работает на чужое казино, черт его возьми!

Вебшеллы — 9+ копий

Вебшелл — это, по сути, черный ход на ваш сервер. Маленький PHP-скрипт, через который хакер может удаленно выполнять любые команды: читать файлы, загружать новые, удалять, изменять — все, что угодно. И таких «черных ходов» мы нашли девять штук.

Файлы с названиями вроде clasa99.php, astar.php, proccess_config.php — разбросаны по разным директориям. Некоторые маскировались под CSS-файлы (editorm.css.php в /wp-includes/blocks/avatar/). Один имел AES-шифрование — это уже не любительщина, а инструмент из арсенала для перепродажи доступа на хакерских форумах.

Фейковые плагины

В директории плагинов появились каталоги, имитирующие легитимные расширения. Внутри — PHP-файлы размером по 50–60 КБ, начиненные обфусцированным кодом — то есть намеренно запутанным так, чтобы ни человек, ни антивирус не смогли быстро понять, что он делает. WordPress их видит как «плагины», админ может даже не заметить лишний пункт в списке. Как дополнительный постоялец в квартире, которого никто не приглашал, но он тихо живет и ест из вашего холодильника.

Инъекции в темы

В шести темах был модифицирован functions.php. Добавлен код на индонезийском языке (комментарии «Memanggil file backlink»), который через хук wp_footer подгружал файл backlink.php — инъекцию внешних ссылок в подвал сайта. Каждое посещение страницы генерировало невидимые для пользователя SEO-ссылки на сайты заказчика атаки.

Скрытый администратор

В mu-plugins лежал файл jetpack-performance.php — название, которое не вызывает никаких подозрений. Но внутри — фильтр, который скрывал конкретного пользователя из админ-панели. Хакер создал себе администраторский аккаунт, а затем сделал его невидимым. Даже если вы зайдете в «Пользователи» — вы его не увидите. Он просто не существует в вашем интерфейсе. Но он есть. Сидит себе тихо в вашей квартире, ест ваш борщ, спит на вашей кровати — и вы даже не подозреваете, что он там. Наглость? Нет. Это бизнес-модель.

Зараженные root-файлы

В каждом index.php корневой директории был внедрен код, загружающий payload с внешнего сервера. Это позволяло хакеру менять поведение сайтов без повторного взлома — сегодня редирект на казино, завтра криптомайнер, послезавтра фишинг-страница. Пульт дистанционного управления вашим сайтом — только в чужих руках.

Хакерские аккаунты

На большинстве сайтов были созданы хакерские администраторские аккаунты. А на одном сайте мы обнаружили 232 спам-аккаунта. Двести тридцать два. На одном сайте. Вам там не тесно, ребята? 😄

Кто за этим стоит и зачем

Судя по комментариям в коде на индонезийском языке — следы ведут в Юго-Восточную Азию. Но не стоит представлять себе кинематографичного хакера в капюшоне, который ночью пьет кофе и зловещо улыбается в монитор. Это конвейер. Бизнес. Очень прибыльный бизнес.

Взлом массовый и автоматизированный. Боты сканируют миллионы серверов, пробуют типичные пароли или используют базы утечек. Один украденный пароль — и автоматический скрипт за минуты заражает все сайты на аккаунте.

А дальше — монетизация. Многослойная, как луковица.

Doorway-страницы продаются заказчикам спама пачками: «1000 doorways на трастовых доменах — $300». Бэкдоры перепродаются отдельно — доступ к взломанному серверу на хакерском форуме стоит от $5 до $50 за штуку. Backlink-инъекции — это отдельная услуга для «черного SEO». А если все остальное не удастся — всегда можно развернуть криптомайнер или использовать сервер для DDoS-атак.

Один взломанный аккаунт с двенадцатью сайтами — это не «инцидент». Это актив, который приносит доход нескольким разным покупателям одновременно.

Почему это случилось: никаких гениев, только халатность

Здесь нет никаких SQL-инъекций или сложных zero-day эксплойтов. Все гораздо проще. И именно это делает эту историю такой болезненной.

Все признаки указывают на компрометацию FTP/SSH-пароля. Идентичный паттерн заражения на всех двенадцати сайтах — один автоматический проход по файловой системе. Модифицированные core-файлы WordPress — через уязвимость плагина это невозможно, нужен прямой доступ к файлам. Файлы созданы от имени системного пользователя хостинга.

Как произошла утечка? Есть несколько типичных сценариев.

Слабый или повторно используемый пароль. Если вы используете один пароль для FTP и для регистрации на каком-то форуме — рано или поздно он попадет в базу утечек.

FTP-клиент как самое слабое звено. FileZilla и подобные клиенты хранят пароли в открытом виде в XML-файлах на вашем компьютере. Один троян-стилер — и все ваши аккаунты скомпрометированы.

Фишинг. Поддельная страница входа в панель хостинга — выглядит один в один, но отправляет ваши данные совсем не туда, куда вы думаете.

А дальше — виртуальный хостинг сделал свое дело. Двенадцать сайтов под одним системным аккаунтом. Один пароль = полный доступ ко всему. Как один ключ от всего дома — и от квартир, и от подвала, и от чердака.

И еще один момент, который не могу не упомянуть: на сервере работал PHP 7.3–7.4. PHP 7.3 не обновляется с декабря 2021 года, PHP 7.4 — с ноября 2022. То есть годами без каких-либо патчей безопасности. В 2026 году стандарт — PHP 8.3+. Три-четыре года без патчей — это подарок для любого бота, сканирующего серверы.

Как я лечил эти сайты

Процесс очистки занял несколько часов интенсивной работы. Несколько очень интенсивных часов. Если коротко — вот что пришлось сделать:

  • Нашел и удалил все вредоносные файлы — вебшеллы, фейковые плагины, doorway-страницы, бэкдоры в mu-plugins, зараженные index.php и backlink-инъекции в темах
  • Удалил хакерские аккаунты из баз данных всех сайтов
  • Понизил роль подозрительных «системных» аккаунтов до подписчика
  • Перегенерировал секретные ключи WordPress (salt keys) — это сбрасывает все активные сессии, включая хакерские
  • Заблокировал выполнение PHP в директории uploads
  • Отключил редактирование файлов через админку
  • Восстановил поврежденные файлы тем

Это была техническая часть. Но без изменения подхода к безопасности — все это придется повторять снова и снова.

Пять уроков, которые стоили бессонной ночи

Я подготовил детальный технический чеклист безопасности WordPress на 2026 год — он доступен на моем образовательном портале: Чеклист безопасности WordPress (2026). Там есть все — от конфигурации wp-config.php до настройки серверных заголовков безопасности и WAF.

Но если выделить самое важное из этой истории — вот пять выводов.

Один пароль — одна точка отказа. Если на вашем хостинге живет десять сайтов под одним аккаунтом — компрометация одного пароля означает компрометацию всего. Используйте SSH-ключи вместо паролей. Если пароли — только уникальные, только сложные, только через менеджер паролей. И никогда — никогда — не сохраняйте их в FileZilla или других FTP-клиентах.

PHP должен быть актуальным. Как я уже упомянул выше — устаревшая версия PHP без патчей безопасности это приглашение для ботов. Обновляйте до актуальной версии, не откладывайте.

Виртуальный хостинг — это коммунальная квартира. Ваши сайты живут рядом со сотнями других, и один скомпрометированный сосед может стать проблемой для всех. Для серьезных проектов стоит рассмотреть выделенный сервер (VPS) или хостинг с изоляцией сайтов друг от друга.

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

Бэкапы — это не «когда-нибудь сделаю». Если бы существовали чистые бэкапы — восстановление заняло бы минуты, а не часы ручной работы по поиску и удалению каждого вредоносного файла отдельно.

Итоги

Каждый взлом — это не техническая проблема. Это проблема приоритетов.

Когда бизнес решает «сэкономить» на безопасности, отложить обновления на потом, использовать один пароль для всего — он не экономит. Он берет кредит. Кредит с очень высокой процентной ставкой, который придется платить не деньгами, а репутацией, позициями в Google, данными клиентов и бессонными ночами.

Двенадцать сайтов. Одна ночь. Один пароль.

Не будьте этим кейсом.

Если ваш WordPress-сайт ведет себя странно, Google показывает под вашим доменом чужой контент, или вы просто хотите убедиться, что все в порядке — напишите мне. Я проведу аудит безопасности, найду уязвимости и закрою их до того, как ими воспользуется кто-то другой. Лучше потратить час на проверку сейчас, чем потом несколько бессонных ночей на лечение.

Виталий Капля

Основатель, веб-разработчик, эксперт по WordPress

Программированием начал интересоваться еще в 1997 году, первое знакомство с будущей профессией – Visual Basic. В 2004-2005 годах занимался разработкой…

Подробнее об авторе

Эксперт кастомной WordPress разработки

Бесплатная консультация + просчет стоимости

Больше интересных статей

Начните вводить текст для поиска
Вход для клиентов

Этот сайт использует файлы cookie

Мы используем файлы cookie для персонализации содержимого и рекламы, предоставления функций социальных сетей и анализа нашего трафика. Мы также предоставляем информацию о вашем использовании нашего веб-сайта нашим партнерам по социальным сетям, рекламе и аналитикам, которые могут совмещать ее с другой информацией, которую вы им предоставили или собрали при использовании вами их услуг. Продолжая пользоваться нашим сайтом, вы согласны с использованием файлов cookie, а также принимаете нашу Политику конфиденциальности и Условия использования.

Я на связи!