Seqrite 16 октября опубликовала разбор WP2Shell — цепочки из двух уязвимостей ядра WordPress, которая ведёт от неаутентифицированного запроса к выполнению кода на сервере. Проще говоря, атакующему не нужен вход в админку: он создаёт учётную запись администратора и ставит плагин, работающий как веб-шелл.
Обе уязвимости раскрыты в июле 2026 года. Сам отчёт не подтверждает массовую эксплуатацию в реальных атаках — речь о задокументированной цепочке и proof of concept. Но для владельца сайта разница невелика: публичный ресурс на уязвимой версии может быть скомпрометирован раньше, чем он заметит подозрительный аккаунт или плагин.
Как устроена цепочка: REST API плюс SQL-инъекция
Первое звено — CVE-2026-63030. Это ошибка в batch-контроллере REST API по адресу /wp-json/batch/v1, который обрабатывает несколько API-запросов в одной отправке. По данным Seqrite, вложенные запросы путают обработку маршрутов и позволяют добраться до функциональности, требующей аутентификации. Сама по себе эта уязвимость код не выполняет — она открывает путь ко второй.
Второе звено — CVE-2026-60137, SQL-инъекция в эндпоинте записей. Публичный параметр author_exclude отображается на author__not_in в WP_Query, и при неаккуратной обработке ввода он влияет на запрос к базе. В связке с ошибкой маршрутизации неаутентифицированный запрос дотягивается до уязвимого запроса.
Урон даёт именно комбинация: первая уязвимость снимает барьер аутентификации, вторая даёт доступ к базе. Ни одну из них Seqrite не описывает как прямой веб-шелл — но после выполнения кода на сервере атакующий может вносить изменения в обход панели WordPress.
Что именно делает эксплойт
Продемонстрированная последовательность полезна защитникам как список артефактов. Цепочка позволяет:
- создать неожиданную учётную запись администратора;
- положить ZIP-архив в каталог загрузок;
- распаковать из него PHP-файлы;
- перенести каталог плагина в
wp-content/plugins.
Плагин и выполняет роль веб-шелла — интерфейса для запуска команд на сервере. Seqrite описывает временные проверки записи в wp-content, затем размещение архива в wp-content/uploads/2026/10/ и распаковку в wp-content/upgrade/.
Эталонный архив в отчёте — wp2shell_4e9b3641.zip, а извлечённые файлы и каталоги плагинов идут по шаблону wp2shell_<hex>. Запись файлов может выполнять httpd.exe — как и при обычной работе плагинов. Одно это имя процесса компромисса не доказывает.
Какие версии WordPress уязвимы
Полной цепочке подвержены WordPress 6.9.0–6.9.4 и 7.0.0–7.0.1. Версии 6.8.0–6.8.5 затронуты только CVE-2026-60137.
Исправленными указаны 6.8.6, 6.9.5 и 7.0.2. Нужно обновиться до подходящего фиксированного релиза или более поздней поддерживаемой версии — и убедиться, что обновление действительно применилось.
Ограничение неаутентифицированного доступа к чувствительным функциям REST API снижает поверхность атаки, но заменой патчу не служит.
Что проверить после обновления
Патч закрывает дыру, но не отменяет уже случившуюся компрометацию. Номер исправленной версии сам по себе не доказывает, что следы взлома удалены.
Порядок проверки по отчёту:
- Просмотреть список учётных записей и найти незнакомых администраторов, обратив внимание на время создания.
- Проверить каталоги плагинов и кэша на новые или изменённые PHP-файлы.
- Поискать в логах подозрительные обращения к batch-эндпоинту.
- Найти файлы
temp-write-test-*, архивыwp2shell_*.zipи каталоги плагиновwp2shell_<hex>.
Если что-то из этого найдено: сохранить доказательства, отключить подозрительные плагины, сбросить скомпрометированные учётные данные и разобраться с механизмами закрепления в системе.
Индикаторы компрометации
| Тип | Индикатор | Примечание |
|---|---|---|
| Эндпоинт | /wp-json/batch/v1 |
batch-эндпоинт REST API |
| Шаблон файлов | temp-write-test-* |
временные файлы в wp-content/ |
| Пример архива | wp2shell_4e9b3641.zip |
образец в wp-content/uploads/2026/10/ |
| Шаблон каталогов | wp2shell_<hex> |
встречается в каталогах upgrade и plugins |
| Шаблон PHP-файлов | wp2shell_<hex>.php |
пример имени извлечённого файла |
| Файловая активность | новые или изменённые .php в plugins и кэше |
сравнить с ожидаемой активностью сайта |
| Учётная запись | неожиданный администратор | проверить время создания |
| Детект | HTTP/CVE-2026-63030!DP.50405 |
сетевая сигнатура Quick Heal |
| Детект | HTTP/CVE-2026-63030!SP.50370 |
сетевая сигнатура Quick Heal |
| Детект | SL_A WP2Shell Suspicious PHP File Modification in WordPress Plugins |
поведенческая сигнатура |
WordPress в России: обновиться и посмотреть на аккаунты
WordPress остаётся массовой платформой для сайтов малого бизнеса, и в российской практике такие площадки часто живут на хостинге без выделенного администратора — обновления откладываются месяцами. Цепочка WP2Shell бьёт ровно по такому сценарию: вход не нужен, достаточно публичного REST API на уязвимой версии.
Практический минимум для локального админа — сверить версию ядра с исправленными, обновить её и пройтись по списку администраторов. Если на одном хостинге живёт несколько сайтов, проверять стоит все: база и файлы у них могут быть общими по инфраструктуре.
Тема веб-шеллов через плагины и цепочек уязвимостей уже поднималась в разборах атаки на цепочку поставок плагинов WordPress и в материале о том, как CSS в письме превращается в кейлоггер. Общий принцип один: сначала закрыть вход, потом искать следы.
Частые вопросы
Кого касается WP2Shell?
Владельцев и администраторов сайтов на WordPress версий 6.9.0–6.9.4 и 7.0.0–7.0.1 — они уязвимы к полной цепочке. Сайты на 6.8.0–6.8.5 затронуты только SQL-инъекцией CVE-2026-60137.
Нужен ли атакующему аккаунт на сайте?
Нет. Цепочка начинается с неаутентифицированного запроса к REST API, поэтому вход в админку не требуется.
Это уже эксплуатируют в реальных атаках?
Отчёт Seqrite этого не устанавливает. В нём описаны уязвимости, последовательность эксплуатации и proof of concept, а не массовая кампания.
Достаточно ли обновиться до 6.9.5 или 7.0.2?
Для закрытия уязвимости — да, это исправленные версии. Но обновление не удаляет следы возможной компрометации, поэтому проверка аккаунтов, плагинов и логов обязательна.
Как понять, что сайт уже взломали?
Ищите незнакомых администраторов, файлы temp-write-test-*, архивы wp2shell_*.zip, каталоги и PHP-файлы по шаблону wp2shell_<hex>, а также новые или изменённые .php в каталогах плагинов и кэша.
Что делать при находке?
Сохранить доказательства, отключить подозрительные плагины, сбросить скомпрометированные учётные данные и выяснить, как злоумышленник закрепился на сервере.
Поможет ли ограничение REST API вместо патча?
Нет. Ограничение неаутентифицированного доступа к чувствительным функциям REST API может снизить риск, но заменой обновлению ядра не является.
Что означает запись httpd.exe в отчёте?
Это процесс, который может писать файлы, в том числе при штатной работе плагинов. Само имя процесса компромисса не доказывает — смотреть нужно на имена файлов WP2Shell и неожиданных администраторов.
Источник: cybersecuritynews.com