Hushfort

Как проверить, что мой сайт на WordPress открывает посторонним?

Автор: Eureka Studio · Обновлено

Коротко

Проверьте сайт снаружи реальными запросами, не входя в систему: откройте /wp-login.php, /xmlrpc.php, /wp-json/wp/v2/users, /?author=1 и /wp-sitemap-users-1.xml. Каждый из них покажет, открыта ли дверь для входа и утекает ли имя пользователя. Запросы можно выполнить в браузере или через curl — или поручить их плагину-сканеру, который назовёт всё найденное.

Шаги

  1. 1Шаг 1

    Откройте приватное окно или терминал

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

    Пять запросов, которые сделал бы бот
    curl -sI https://yoursite.com/wp-login.phpcurl -s  https://yoursite.com/xmlrpc.phpcurl -s  https://yoursite.com/wp-json/wp/v2/userscurl -sI https://yoursite.com/?author=1curl -sI https://yoursite.com/wp-sitemap-users-1.xml
  2. 2Шаг 2

    Проверьте двери для входа

    Если wp-login.php показывает форму входа, стандартный вход открыт для всех. Если xmlrpc.php отвечает «accepts POST requests only», открыта и вторая дверь для входа.

    yoursite.com/xmlrpc.php отвечает: XML-RPC server accepts POST requests only
  3. 3Шаг 3

    Проверьте утечки имён пользователей

    JSON-список из /wp/v2/users, перенаправление с ?author=1 на /author/name/ или карта сайта с пользователями — всё это раскрывает логины.

    Публичный список пользователей REST с логином demo-admin
  4. 4Шаг 4

    Запустите «Сканирование поверхности», чтобы увидеть полную картину

    В Hushfort откройте «Обзор» и нажмите «Сканировать снова» под «Сканированием поверхности». Оно отправляет вашему сайту реальные запросы и называет каждое найденное имя пользователя.

    «Сканирование поверхности» с 3 открытыми точками: XML-RPC открыт, список пользователей REST и перебор авторов раскрывают demo-admin
  5. 5Шаг 5

    Закройте найденное и просканируйте снова

    Включите «Укрепление поверхности» и нажмите «Сканировать снова». Двери, которые были красными, теперь отмечены зелёной галочкой; всё оставшееся помечено «Внимание» с подсказкой, как исправить.

    «Сканирование поверхности» после «Укрепления поверхности»: XML-RPC, список пользователей REST, перебор авторов и список авторов в карте сайта закрыты

Почему это важно

Проверить безопасность сайта на WordPress проще всего снаружи, как это делает бот: не входя в систему, откройте /wp-login.php, /xmlrpc.php, /wp-json/wp/v2/users, /?author=1 и /wp-sitemap-users-1.xml. Ответы покажут, какие двери для входа открыты и утекают ли имена пользователей.

Большинство советов по безопасности — про переключатели: включите это, отключите то. Но переключатель говорит о том, что вы попросили, а не о том, что произошло. Слой кэширования может отдавать старый ответ. Правило CDN может блокировать файл ещё до того, как WordPress увидит запрос. Один плагин может снова открыть то, что закрыл другой. Единственный честный ответ на вопрос «что открывает мой сайт?» — спросить его так, как спросил бы посторонний.

Хорошая новость: со стороны входа проверять нужно немногое. Боты ищут одни и те же несколько адресов на каждом сайте WordPress:

Адрес Что раскрывает, если открыт
/wp-login.php, /wp-admin Стандартную форму входа
/xmlrpc.php Вторую дверь для входа с массовым подбором через system.multicall
/wp-json/wp/v2/users Список авторов и их логинов (ярлыков)
/?author=1 Перенаправление на /author/login-name/
/wp-sitemap-users-1.xml Адреса архивов авторов, содержащие логины

Ни один из этих пунктов сам по себе не катастрофа. Но вместе они дают боту список имён и две двери, чтобы их опробовать. Зная, что открыто, вы закроете всё в правильном порядке: сначала двери, потом имена.

Частые ошибки

  • Проверка из-под своей учётной записи. WordPress показывает вошедшим пользователям больше. Используйте приватное окно или curl.
  • Проверка кэшированной страницы. Если вы только что изменили настройку, сначала очистите кэш страниц и кэш CDN, иначе увидите старый ответ.
  • Остановка на первом зелёном сигнале. Закрыть форму входа и оставить открытым XML-RPC — самое частое полурешение, которое мы встречаем.
  • Ожидание полного аудита безопасности. Эти проверки касаются путей внутрь. Они ничего не говорят о вредоносном коде, изменениях файлов или устаревших плагинах.

Без плагина

Пять команд curl из шага 1 — это ручной способ, и его стоит знать. Читайте результаты так:

  • HTTP/2 200 на wp-login.php: стандартный вход открыт для всех. 404: он скрыт.
  • XML-RPC server accepts POST requests only. от xmlrpc.php: точка доступа работает. Чтобы узнать, принимается ли вход, пришлось бы отправить вызов wp.getUsersBlogs с тестовой учётной записью.
  • JSON-массив из /wp/v2/users с полями "slug": имена пользователей открыты. 401 или пустой массив: закрыто.
  • Location: /author/name/ от ?author=1: утечка. Повторите с 2, 3 и так далее, чтобы понять, сколько пользователей может собрать бот.
  • 200 на карте сайта с пользователями: адреса авторов перечислены.

Минусы — время и интерпретация. Проверку нужно повторять после каждого изменения, а чтобы как следует проверить вход через XML-RPC, придётся составлять XML вручную.

Если что-то пошло не так

  • Сканер пишет «открыто», хотя вы это отключили. Очистите кэш страниц и CDN и просканируйте снова. Если всё ещё открыто, возможно, настройку перекрывает другой плагин или правило сервера.
  • Сканер не может достучаться до сайта. Некоторые хостинги запрещают сайту отправлять запросы самому себе (loopback). Попросите хостинг разрешить loopback-запросы или используйте способ с curl снаружи.
  • Имя пользователя утекает и после укрепления. Проверьте блок автора в вашей теме и карту сайта авторов в SEO-плагине. Если тема выводит отображаемое имя автора, измените его.

С Hushfort

«Сканирование поверхности» входит в Hushfort Security — бесплатный плагин безопасности для WordPress.

«Сканирование поверхности» находится в панели «Укрепление поверхности» Hushfort. Оно измеряет, что ваш сайт на самом деле открывает, с помощью реальных запросов — так же, как ручной способ, — и перечисляет найденные имена пользователей поимённо. Каждой находке соответствует уровень Hushfort, который её закрывает:

Мы создали «Сканирование поверхности» после того, как в один магазин продолжали поступать попытки подбора пароля через XML-RPC, хотя страница входа уже была скрыта. Настройки выглядели в порядке; открытую дверь показал только реальный запрос.

Частые вопросы

Законно ли сканировать собственный сайт на WordPress?

Да, отправлять обычные запросы на свой сайт можно. Проверяйте только сайты, которыми владеете или на проверку которых у вас есть разрешение.

Почему проверять реальными запросами, а не по настройкам?

Настройки могут говорить одно, а кэш, правило CDN, другой плагин или тема — делать другое. Реальный запрос показывает, что на самом деле получает посетитель.

Находит ли эта проверка вредоносный код или уязвимые плагины?

Нет. Она проверяет двери и утечки имён пользователей. Для поиска вредоносного кода и известных уязвимостей нужен другой инструмент; Hushfort этого не делает.

Как часто нужно проверять?

После установки или удаления плагинов, смены темы, переезда на другой хостинг или изменения правил CDN. Именно в такие моменты открытость сайта незаметно меняется.

Сообщить об ошибке или предложить функцию

Ваше сообщение попадёт прямо к команде, которая разрабатывает Hushfort.

О чём сообщение?

Используется только для ответа вам.

Мы используем эти данные только для ответа вам. Конфиденциальность