Злоумышленники использовали свыше 162 000 сайтов на WordPress для проведения масштабной DDoS-атаки на интернет-ресурсы

Отключите XML-RPC, если не используете его намеренно. Это не опция – это вопрос выживаемости. Метод pingback, встроенный в ядро, превратился в бомбу с часовым механизмом. Он активируется извне, без авторизации, и начинает рассылать HTTP-запросы по списку целей. На полном автомате.

Злоумышленники получили доступ к целому флоту. Причина банальна: десятки тысяч установок хранят включённую функцию обратной ссылки, даже если пинги отключены в настройках. Проверка простой:

curl -d \"pingback.pinghttp://жертва.comhttp://ваш-сайт.com/любой-пост\" http://ваш-сайт.com/xmlrpc.php

Если ответ содержит faultCode 0 – вы уже часть чужой атаки.

Удалите или заблокируйте xmlrpc.php на уровне сервера. Apache:


Order Deny,Allow
Deny from all

Для Nginx:

location = /xmlrpc.php {
deny all;
}

Случай не единичный. Сценарий повторяется годами. Но масштабы этой волны поражают – захвачено более 162 000 инстансов. Каждый стал катапультой. Рекурсивная сеть, бьющая по заданным координатам. Хаос, спровоцированный беспечностью.

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

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

Хуже другое. Всё это – штатная функциональность. Никаких взломов. Просто архитектурная дыра, оформленная как возможность для взаимодействия. Спящий агент в каждой сборке.

Внимание! Не полагайтесь на плагины безопасности. Они часто не блокируют вызовы XML-RPC, особенно если используется Jetpack или внешняя публикация через API.

Хотите отключить полностью? Удалите строку в functions.php:

add_filter(\'xmlrpc_enabled\', \'__return_false\');

Мало. Этого недостаточно. Проверьте файлы, запретите доступ, настройте WAF. Только так можно исключить своё участие в чужой игре.

И задайте себе вопрос: зачем вообще разрешать внешним системам вызывать методы вашего ядра? Ответ не требует размышлений. Только действия.

Как злоумышленники превращают сайты WordPress в инструменты DDoS-атак

Удалите или заблокируйте xmlrpc.php, если не используете его осознанно. Через этот файл происходят тысячи запросов к функции pingback.ping, что позволяет атакующему отправлять лавину пакетов к третьей цели, маскируясь под вас. Это не ошибка, это особенность архитектуры. Хотели удобства? Получите уязвимость.

Что происходит: скрипты на скомпрометированных ресурсах массово рассылают XML-запросы. Каждый из них указывает внешний IP в качестве цели, и сервер послушно отправляет отклик. Сотни, тысячи таких откликов. Это и есть отражённая атака. И самое абсурдное – сайт при этом «не ломается» и не выдаёт ошибок. Владелец ничего не замечает.

Дальше хуже. Многие шаблоны и плагины сохраняют REST API доступ открытым без авторизации. Злоумышленник использует /wp-json/wp/v2/posts или /wp-json/oembed/1.0/embed как прокси для флуд-запросов. А теперь представьте: ботнет из десятков тысяч ресурсов, где каждая точка умножает нагрузку в десятки раз.

Важно! Отключите REST API для неавторизованных пользователей, если ваш проект не требует публичного взаимодействия через JSON. Это один из главных векторов атаки.

Наблюдается и подмена плагинов. Вы устанавливаете кэш или SEO-расширение, а оно, под капотом, выполняет curl-запросы к IP-адресу жертвы через cron. Скрипт зашит в update.php. Даже техподдержка хостинга может не сразу понять, что вы стали частью атаки.

Не используйте плагины вне официального каталога. Даже если они бесплатные и «с кучей скачиваний». Статистика скачиваний ничего не значит. Смотрите код. Проверьте на наличие функций вроде fsockopen(), curl_exec(), shell_exec(). Эти вызовы – красный флаг.

Помните: злоумышленник не пытается сломать ваш ресурс. Он делает хуже – превращает его в оружие против других.

Сложность ещё и в том, что типовой серверный лог не всегда фиксирует нагрузку как аномальную. Вы не увидите ничего подозрительного в access.log. А между тем, CPU на пределе, исходящий трафик растёт, а жалобы от провайдеров уже летят. Признак: нагрузка без посетителей.

Решение: жёсткие ограничения через .htaccess или NGINX на любые входящие к xmlrpc и REST API. Установка модулей защиты, вроде Wordfence, с кастомными правилами. Но главное – постоянный аудит. Просматривайте логи cron. Анализируйте исходящие подключения. Отключите всё, что не используете осознанно.

Злоумышленник ищет не жертву, а проводник. Это и делает его по-настоящему опасным.

Какие уязвимости плагинов и настроек делают WordPress-ресурсы мишенью

Удалите или отключите XML-RPC, если он не используется. Этот интерфейс становится основной точкой входа при атаке через метод pingback. Отключить можно добавлением строки в .htaccess:


<Files xmlrpc.php>
  Order Deny,Allow
  Deny from all
</Files>

Не обновляете плагины – считайте, что сами открыли дверь. Наиболее часто эксплуатируемые: Contact Form 7, WP File Manager, Duplicator. Устаревший код, открытые директории, отсутствие валидации входных данных. Вы ждали беды? Вот она.

Распространённая дыра – отсутствие ограничения частоты запросов. Без rate limiting сервер принимает десятки тысяч запросов в секунду. Используйте Fail2Ban, ModSecurity или Cloudflare Rate Limiting.

Некорректные права доступа на файлы. Установили 777 ради «оно должно работать»? Зря. Корректные значения:

  • wp-config.php – 600
  • Директории – 755
  • Файлы – 644

Важно помнить: плагин из неизвестного источника – это как бомба с часовым механизмом. Вы не знаете, когда рванёт.

Публичный доступ к REST API без ограничений. Через него можно узнать логины, структуру постов, даже уязвимые эндпоинты. Отключите его через код:


add_filter(\'rest_authentication_errors\', function($result) {
  if (!is_user_logged_in()) {
    return new WP_Error(\'rest_forbidden\', \'REST API закрыт\', array(\'status\' => 403));
  }
  return $result;
});

Административка доступна без ограничений по IP? Поздравляю, у вас открытый вход. Настройте блокировку через .htaccess:


<Files wp-login.php>
  Order Deny,Allow
  Deny from all
  Allow from 192.168.1.1
</Files>

Внимание! Использование одного и того же ключа безопасности SALT годами – фатальная ошибка. Регулярно обновляйте их через официальный генератор.

Без ограничений на загрузку файлов злоумышленник может закинуть shell и получить полный контроль. Отключите загрузку скриптов, кроме нужных форматов:


define(\'ALLOW_UNFILTERED_UPLOADS\', false);
add_filter(\'upload_mimes\', function($mimes) {
  unset($mimes[\'php\'], $mimes[\'exe\'], $mimes[\'js\']);
  return $mimes;
});

Плагин безопасности без логирования – как сигнализация без сирены. Никто ничего не заметит. Используйте Wordfence, iThemes Security или WP Cerber с обязательным включением журналов и уведомлений по e-mail.

Установлены десятки неиспользуемых расширений? Каждый из них – потенциальная дыра. Удаляйте. Не отключайте – именно удаляйте.

Помните: в WordPress нет мелочей. Каждая оплошность – это шанс для атакующего.

Что должны предпринять администраторы WordPress-сайтов для защиты от участия в атаках

Отключите XML-RPC. Это не обсуждается. Метод pingback.ping превращает ваш ресурс в ботнет-узел. Удалите поддержку через фильтр в functions.php:


add_filter( \'xmlrpc_enabled\', \'__return_false\' );

Если плагин Jetpack жизненно необходим – убедитесь, что используется исключительно whitelisted-метод system.multicall. Остальное – в топку. Поддержка REST API? Ограничьте доступ через .htaccess или плагин типа WP Cerber.

Не полагайтесь на Wordfence по умолчанию. Его конфигурация допускает открытые точки входа при базовой установке. Включите режим Extended Protection, отключите Pingback Discovery.

Удалите неиспользуемые темы. Даже дефолтные – Twenty Twenty и компания. Каждая строка кода – потенциальная уязвимость. Чем меньше кода – тем меньше дыр.

Важно! Хранение старых тем и плагинов даже в отключенном состоянии не гарантирует безопасность. Их могут вызвать напрямую.

Отключите комментарии, если вы их не используете. Особенно важно – деактивировать встроенный функционал XML-RPC-пингбэков. Используйте плагин Disable Comments. Или вручную:


add_filter( \'comments_open\', \'__return_false\', 20, 2 );
add_filter( \'pings_open\', \'__return_false\', 20, 2 );

Проверьте доступность файла xmlrpc.php извне. Простая команда curl покажет, открыт ли он:


curl -I https://example.com/xmlrpc.php

Ответ 405? Отлично. 200? Удаляйте, блокируйте, запрещайте. Настройте правила в файле .htaccess:



Order Deny,Allow
Deny from all

Удалите все плагины, не обновлявшиеся более полугода. Да, даже если они \»работают\». Вы не знаете, что в них происходит под капотом. Примеры: old-page-builder, custom-widgets, pdf-viewer. Потенциальные бомбы замедленного действия.

Помните! Один устаревший плагин может превратить ваш сервер в оружие.

Регулярно сканируйте активные и неактивные модули с помощью WPScan или local-scanner. Не доверяйте автозащите от хостинга – она реагирует после атаки.

Контролируйте исходящий трафик. Не должно быть внезапных запросов к внешним адресам через cURL, wp_remote_post, socket-connection. Включите логирование – и смотрите в оба. Особенно на POST-запросы с заголовками X-Pingback.

Обновляйте ядро вручную, если не уверены в автозагрузках. Периодически проверяйте wp-includes и wp-admin на наличие файлов, не входящих в стандартный дистрибутив. Лишние – удалять без сожалений.

Используйте модульный WAF. Без панели администратора на том же домене. Доступ – только через VPN или конкретные IP. Не используйте капчу как основную защиту. Это скотч против ножа.

Читайте также:  Плагин Typecase для кастомизации шрифтов в теме WordPress Twenty Fifteen

Оставьте комментарий

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