Утечка логинов пользователей через 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.
Как устранить уязвимость (Пошаговое руководство)
Для ликвидации риска выполните следующие действия в конфигурации вашего сервера или приложения:
// Добавьте в 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 по умолчанию отдает логины всех авторов и администраторов блога, предоставляя готовый список имен для атак методом перебора паролей.
Влияние на соответствие стандартам: Нарушение требований 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 часто подвергается массированным автоматизированным сканированиям. Отключение неиспользуемого протокола XML-RPC, сокрытие REST API эндпоинта пользователей и регулярное обновление тем и плагинов снижают риск компрометации сайта на 95%.
Для предотвращения вектора «Утечка логинов пользователей через WordPress REST API» зафиксируйте проверочные правила в CI/CD пайплайне и настройте непрерывный мониторинг внешнего периметра через Site Check.