Риск: Средний 5.3 Medium CWE-200: Exposure of Sensitive Information to an Unauthorized Actor

Утечка логинов пользователей через WordPress REST API

По умолчанию WordPress REST API отдает полный список зарегистрированных пользователей сайта по запросу /wp-json/wp/v2/users.

Злоумышленники получают логины всех авторов и администраторов сайта, что в разы упрощает последующую атаку методом подбора паролей (брутфорс).

Степень критичности и чем опасна уязвимость

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

Вектор атаки: Автоматизированные сканеры и поисковые ботнеты постоянно исследуют интернет по данной сигнатуре. При обнаружении уязвимости атака запускается в автоматическом режиме без участия человека.

Как наш сканер находит эту уязвимость

Site Check отправляет запрос к эндпоинту /wp-json/wp/v2/users и проверяет, возвращает ли сервер имена учетных записей без авторизации.

Проверка периметра CMS WordPress включает бережный опрос стандартных служебных путей (/wp-json/, /xmlrpc.php, /wp-content/plugins/) для определения векторов утечки версий плагинов, имен авторов и отладочных логов без создания нагрузки на базу данных MySQL.

Как устранить уязвимость (Пошаговое руководство)

Для ликвидации риска выполните следующие действия в конфигурации вашего сервера или приложения:

Отключение перечисления пользователей в WordPress REST API
      // Добавьте в functions.php вашей темы WordPress:
add_filter('rest_endpoints', function($endpoints) {
    if (!is_user_logged_in() && isset($endpoints['/wp/v2/users'])) {
        unset($endpoints['/wp/v2/users']);
    }
    return $endpoints;
});
    
  • Отключите публичный доступ к эндпоинту /wp/v2/users для неавторизованных пользователей.
  • Никогда не используйте логин 'admin' для главной учетной записи.

Анатомия атаки и реальные последствия для проекта

Эндпоинт /wp-json/wp/v2/users в WordPress по умолчанию отдает логины всех авторов и администраторов блога, предоставляя готовый список имен для атак методом перебора паролей.

Финансовые и юридические риски: Маршрут /wp-json/wp/v2/users раскрывает логины авторов и администраторов WordPress, позволяя запустить адресный перебор паролей (brute-force) против конкретных учетных записей.

Влияние на соответствие стандартам: Нарушение требований OWASP Top 10 (A01:2021 Broken Access Control) и рекомендаций по защите учетных данных пользователей.

Матрица эшелонированной защиты (Defense-in-Depth)

Уровень защиты Техническое действие Инструмент / Механизм
Веб-сервер Nginx Блокировка маршрута /wp-json/wp/v2/users для неавторизованных запросов с возвратом 403 Nginx Location Directive
Плагины CMS WordPress Использование хука rest_endpoints в functions.php для отключения выдачи списка пользователей WordPress Theme Hook
Аутентификация администратора Включение двухфакторной аутентификации (2FA) для всех учетных записей с ролью Administrator WP 2FA / Turnstile

Верификация устранения: команды для быстрой проверки

После внесения изменений в настройки сервера или исходный код приложения проверьте отсутствие уязвимости с помощью терминальных утилит:

Терминал: Проверка эндпоинта и заголовков ответа
curl -s https://ваш-домен.com/wp-json/wp/v2/users | grep "slug"
# Должен возвращать 401 или 404 для неавторизованных запросов
    

Рекомендации DevSecOps для безопасного развертывания

Отключите публичный доступ к эндпоинту пользователей через плагин безопасности или хук rest_authentication_errors в functions.php.

Контрольный чеклист инженера безопасности:
  • ✓ Отключить протокол xmlrpc.php через конфигурационный файл веб-сервера Nginx
  • ✓ Ограничить публичный доступ к эндпоинту /wp-json/wp/v2/users для анонимных клиентов
  • ✓ Запретить выполнение PHP-скриптов в директории загрузок /wp-content/uploads/
  • ✓ Включить автоматические обновления безопасности ядра WordPress и плагинов

Часто задаваемые вопросы по устранению

Почему WordPress по умолчанию показывает логины пользователей?
REST API спроектирован для публичных блогов, где имена авторов считаются открытой информацией, однако в закрытых проектах это создает риск подбора пароля.
Сломает ли блокировка эндпоинта работу сайта?
Нет, для обычных посетителей и отображения статей эндпоинт /wp/v2/users не требуется.
Экспертное резюме инженера по информационной безопасности

Экосистема WordPress часто подвергается массированным автоматизированным сканированиям. Отключение неиспользуемого протокола XML-RPC, сокрытие REST API эндпоинта пользователей и регулярное обновление тем и плагинов снижают риск компрометации сайта на 95%.

Для предотвращения вектора «Утечка логинов пользователей через WordPress REST API» зафиксируйте проверочные правила в CI/CD пайплайне и настройте непрерывный мониторинг внешнего периметра через Site Check.