
Неинвазивный проверщик уязвимости для цепочки RCE до аутентификации wp2shell в WordPress (CVE-2026-63030 / CVE-2026-60137).
Неинтрузивный чекер уязвимости для цепочки RCE-уязвимости "wp2shell" (без аутентификации) в WordPress (CVE-2026-63030 + CVE-2026-60137).
⚠️ Только для авторизованного использования. Запускайте этот инструмент только на тех установках WordPress, которыми вы владеете или на тестирование которых имеете явное разрешение. Это средство для триажа, а не эксплойт. Сканирование систем без разрешения может быть незаконным.
При указании URL wp2shell-check:
generator на главной странице (пассивно).?rest_route=/batch/v1), чтобы проверить, доступен ли маршрут пакетной обработки REST.Он предназначен для быстрого триажа парка сайтов: какие из моих сайтов используют затронутую версию и имеют доступный REST?
Две сцепленные ошибки ядра WordPress, раскрытые с экстренным выпуском 2026-07-17:
| CVE | Type | Affected versions |
|---|---|---|
| CVE-2026-63030 | Путаница маршрутов пакетного REST API (включает RCE) | 6.9.0–6.9.4, 7.0.0–7.0.1 |
| CVE-2026-60137 | SQL-инъекция в WP_Query author__not_in | 6.8.0 и новее (6.8.0–6.8.5 = только SQLi) |
Соединённые вместе, они позволяют неаутентифицированному атакующему добраться до SQL-инъекции и повысить привилегии до удалённого выполнения кода на стандартной установке — без плагинов, без входа. Часть RCE применяется только при отсутствии постоянного кэша объектов.
Исправлено в: 6.8.6 (только SQLi), 6.9.5, 7.0.2 (и 7.1 Beta 2+). WordPress включил принудительные автоматические обновления для затронутых сайтов — проверьте, что обновление действительно установлено.
Сообщено Адамом Кьюсом (Assetnote / Searchlight Cyber) через программу HackerOne WordPress.
Требуется Python 3.9+ и requests.
# with uv
uv pip install requests
# or plain pip
pip install requests
python wp2shell.py https://target.example
Пример вывода:
https://target.example: VULNERABLE (RCE) [6.9.3]
generator часто удаляется или подделывается; отсутствие версии даёт wordpress not detected, а не гарантию, что сайт безопасен или не является WordPress./wp-json/batch/v1 и ?rest_route=/batch/v1 в вашем WAF или ограничьте анонимный доступ к REST API.Предоставляется как есть, только для авторизованного тестирования безопасности и образовательных целей. Вы несёте полную ответственность за то, как вы его используете.
| Вердикт | Значение |
|---|
VULNERABLE (RCE) / VULNERABLE (SQLi) | Затронутая версия и пакетный маршрут REST доступен → уязвимо на стандартной установке. См. Ограничения. |
version-affected (...), route unconfirmed | Версия находится в затронутом диапазоне, но пакетный маршрут REST не ответил как ожидалось. |
not affected | WordPress обнаружен, версия вне затронутых диапазонов. |
wordpress not detected | Версия не найдена (REST заблокирован, тег generator удалён, или это не WordPress). |
unreachable | Хост не ответил. |