Число зондирований пакетного эндпоинта REST API WordPress в нашей инфраструктуре выросло более чем втрое
За неделю, начавшуюся 26 октября, число источников, обращавшихся к нашей инфраструктуре за пакетным эндпоинтом REST API WordPress, точкой входа в цепочку уязвимостей wp2shell, выросло в 3.3 раза по сравнению с прежним средним недельным значением. Сканеры также чаще запрашивали резервные копии, отладочные страницы и внутренние компоненты приложений.
291 Intercept: наш еженедельный отчет о том, за чем автоматические сканеры охотились в нашей собственной инфраструктуре, чтобы вы могли проверить свои системы на те же слабые места. Каждый выпуск охватывает неделю, закончившуюся не менее чем за семь дней до публикации.
Самым заметным изменением в нашей инфраструктуре за неделю с 26 октября стал резкий рост запросов к одному адресу WordPress: /wp-json/batch/v1. К нему обратились около 40 источников, в 3.3 раза больше среднего недельного значения за предыдущие три недели. Именно с этого эндпоинта начинается wp2shell, цепочка из двух уязвимостей в ядре WordPress, которая позволяет злоумышленнику без учетной записи выполнить код на сайте.
Это произошло на фоне в целом более оживленной недели: около 620 источников зондировали нашу инфраструктуру, доступную из интернета, на 10% больше, чем в среднем за предыдущие три недели. WordPress остался главной целью: 66% источников атаковали формы входа WordPress, XML-RPC или пути плагинов, а их число выросло на 20%. Сканеры также чаще запрашивали те части приложений, которые должны оставаться закрытыми.
Что такое wp2shell
Путь /wp-json/ является корнем REST API WordPress, а /wp-json/batch/v1 ведет к его пакетному обработчику, который выполняет несколько запросов к API одним пакетом. По данным Rapid7, wp2shell объединяет две уязвимости. CVE-2026-63030 представляет собой логическую ошибку в этом пакетном обработчике, а CVE-2026-60137 является SQL-инъекцией в эндпоинте записей (posts). Вместе они позволяют человеку без учетной записи выполнить код в WordPress версий с 6.9.0 по 6.9.4 и с 7.0.0 по 7.0.1.
Уязвимость была раскрыта 17 июля 2026 года, и, по данным Rapid7, 21 июля агентство CISA внесло ее в каталог известных эксплуатируемых уязвимостей (Known Exploited Vulnerabilities). Исправления вошли в выпуски 6.9.5, 7.0.2 и 7.1 Beta 2.
Зачем искать уязвимость, для которой уже есть исправление? Сканерам не нужно, чтобы уязвимы были все сайты, достаточно хотя бы некоторых. Запрос им почти ничего не стоит, а любой сайт, все еще работающий на уязвимой версии, стоит того, чтобы вернуться к нему еще раз.
Привычная сторона сканирования WordPress
Скоординированный набор инструментов примерно из 20 источников в нескольких странах прошелся по одному и тому же списку примерно из десяти путей. Он запрашивал один и тот же файл в каталогах с разными именами, например /wp/wp-includes/wlwmanifest.xml, /shop/wp-includes/wlwmanifest.xml и /wordpress/wp-includes/wlwmanifest.xml, а также /xmlrpc.php.
Файл wlwmanifest.xml представляет собой манифест Windows Live Writer, который присутствует в стандартных установках WordPress, а его поиск в типичных каталогах позволяет находить сайты на WordPress перед попытками эксплуатировать уязвимости плагинов или тем. XML-RPC служит следующим шагом: в 2015 году исследователи обнаружили, что его метод system.multicall позволяет злоумышленнику перебрать сотни паролей за один запрос.
Забытые файлы и внутренние компоненты
По сравнению с предыдущими тремя неделями число источников, искавших файлы резервных копий и дампы, выросло на 73%, интересовавшихся внутренними компонентами приложений, такими как Spring Boot actuator, на 63%, а запрашивавших диагностические страницы вроде /phpinfo.php и /info.php, на 52%. Поскольку общее число источников тоже выросло, их доли изменились меньше: доля источников, искавших диагностические страницы, выросла в среднем с 15% до 21%. На графике ниже показаны шесть категорий этой недели: для каждой доля источников на этой неделе сравнивается с ее средним значением за предыдущие три недели.
Доля уникальных источников, атаковавших каждую цель, в процентах от их общего числа. Один источник может атаковать несколько целей, поэтому сумма долей превышает 100%.
| Эта неделя | Среднее за предыдущие 3 нед. | |
|---|---|---|
| Резервные копии и дампы баз данных | 12% | 9% |
| Эндпоинты управления приложениями | 13% | 9% |
| Отладочные и диагностические страницы | 21% | 15% |
| Страницы входа и файлы WordPress | 66% | 61% |
| Исходный код в открытом доступе (Git, SVN) | 29% | 24% |
| Файлы с секретами и конфигурацией | 33% | 33% |
К /actuator/env обратились около 40 источников, в 2.4 раза больше прежнего среднего. В Spring Boot этот эндпоинт показывает конфигурационные свойства приложения. Документация Spring указывает, что по умолчанию через HTTP доступен только health, а значения env по умолчанию маскируются, однако если разработчики открывают этот эндпоинт, не ограничив доступ, он может раскрыть учетные данные, API-ключи и внутренние настройки. Число источников, запрашивавших /wp-config.php.bak, забытую резервную копию конфигурации WordPress, удвоилось и достигло примерно 40.
Второй набор инструментов, также примерно из 20 источников, совмещал эти интересы в одном проходе: /.env, /.git/config, /info.php, /config.json, /server-status и /debug/default/view. Последний путь принадлежит отладчику Yii 2, который показывает данные сессий, переменные окружения и запросы к базе данных. Руководство Yii сообщает, что обычно он доступен только с localhost, однако CVE-2026-103475, раскрытая 30 сентября, затрагивает yii2-starter-kit до версии 4.2.0 включительно, где конфигурация по умолчанию открывает отладчик для всех IP-адресов.
Продолжение темы прошлой недели
В прошлом выпуске мы отмечали, что сканеры стали чаще искать файлы .env в подкаталогах. Эта тенденция сохранилась. К /v2/.env и /old/.env обратились примерно по 60 источников, примерно вдвое больше прежнего среднего, а к /production/.env и /storage/.env обратились 50 и 40 источников соответственно. Всего секретные и конфигурационные файлы искали 200 источников, на 16% больше, что примерно соответствует общему росту числа источников, поэтому их доля осталась на уровне 33%. Для сравнения: исследователи сообщили в феврале о 12,088,677 IP-адресах, отдающих общедоступные файлы наподобие .env.
Поиск Git-репозиториев, с которого мы начинали прошлый выпуск, ослаб по доле, но остался выше прежнего уровня. Всего репозитории исходного кода искали 170 источников, на 20% больше среднего за три недели, хотя их доля среди всех источников снизилась с 37% до 29%.
Кто стоял за запросами
Больше половины источников (55%) относились к сетям облачных и хостинг-провайдеров, причем на DigitalOcean и Google Cloud пришлось по 20%, а 85% всех источников появлялись лишь в течение одного дня. Большинство также пытались выдать себя за людей: 82% отправляли строки User-Agent, выдающие их за обычные браузеры, но 85% вели себя как автоматизированные программы, так что маскировка получилась слабой.
Что затихло
Запросы к /wp-content/plugins/hellopress/wp_filemanager.php, которые в среднем поступали примерно от 20 источников в неделю, почти прекратились: снижение составило 79%. Пока рано говорить, переключились ли сканеры на другие цели. Файлы облачных ключей, такие как /service-account.json, держались примерно на прежнем уровне: около 70 источников.
Что делать
- Проверьте версию WordPress. Если она попадает в диапазон с 6.9.0 по 6.9.4 или с 7.0.0 по 7.0.1, немедленно обновитесь до 6.9.5 или 7.0.2.
- Полностью уберите файлы .env из публичного каталога, включая старые релизы и подкаталоги с версиями. Надежнее всего хранить их на уровень выше корневого каталога сайта.
- Удалите резервные копии и дампы, такие как
/database.sqlили/wp-config.php.bak, отовсюду, куда может добраться браузер. - Закройте доступ к внутренним компонентам. Ограничьте доступ к эндпоинтам Spring Boot actuator и не отключайте маскирование env, удалите тестовые страницы phpinfo, а отладчик Yii оставьте доступным только с localhost.
- Отключите XML-RPC, если он не нужен ничему на вашем сайте.
Об этих наблюдениях
Отчет подготовлен 291 Heat Seeker One, системой мониторинга безопасности 291 Group, которая работает на 291 Crossband, нашей собственной платформе для управления операциями безопасности. Он охватывает только трафик к собственной инфраструктуре 291 Group, доступной из интернета.
Цифры округлены, доли и изменения рассчитываются по числу отдельных источников, а не запросов, и в отчет включены только закономерности, замеченные не менее чем у 20 отдельных источников. Страны указаны по расположению серверов источников, что не обязательно совпадает с местонахождением тех, кто ими управляет. Тип сети определяется по оператору каждой сети; по названию упоминаются только крупные, широко известные провайдеры.