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

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

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

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

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

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/colere-sys/wp2shell-poc
Фреймворки для эксплойтовАнализ уязвимостейЭксплуатация веб-приложенийCTFТестирование на ПроникновениеОбучение и ОбразованиеRed TeamingРазработка Полезной Нагрузки
GitHubcolere-sys/wp2shell-poc

wp2shell-poc

Анализ и сквозная реализация исправленной wordpress RCE уязвимости - CVE-2026-60137 и CVE-2026-63030

Репозиторий
21 месяц назадЕщё не проверено

Популярное

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

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

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

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

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

plot

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

plot

Чем этот PoC отличается от публичных эксплойтов wp2shell

Все PoC используют одни и те же две уязвимости — путаницу в пакетном маршруте REST (CVE-2026-63030) и SQL-инъекцию author__not_in (CVE-2026-60137) — с одинаковой двойной вложенной формой пакета. Разница между ними заключается в выбранном пути RCE, предусловиях окружения и безопасных настройках по умолчанию. В этом документе конкретно указано, где в этом ландшафте находится реализация из данного репозитория.

Краткая версия

  1. Работает за постоянным кешем объектов. Публичные PoCs на основе UNION используют форму инъекции с заполненной базой: полная цепочка реализации, общая для этих версий, даёт ложноотрицательные результаты, а единый файл-унификатор указывает «нет постоянного кеша объектов» как явное предусловие. В этом репозитории форма с пустой базой сохраняет канал UNION — и, следовательно, весь мост к RCE без аутентификации — на тех же хостах (типичная управляемая WordPress-инфраструктура). См. §1.
  2. Безопасен для запуска против продакшна по умолчанию. check не отправляет SQL-полезную нагрузку, если не указано; весь трафик может содержать тег атрибуции; всё, что команда shell записывает на цель, автоматически удаляется после завершения. См. §3.

Таблица сравнения

[1] Только временная/слепая как канал чтения; примитив поддельного поста через UNION существует внутри моста, но не предоставляется как оракул извлечения. [2] Наивный зонд доступности (0) UNION SELECT …») молча отбрасывается при гидратации кеша объектов, available()возвращает false, и весь мост без аутентификации прерывается — см. §1. [3] В собственном README проекта указано «нет постоянного кеша объектов (Redis/Memcached)» в разделе «Предусловия». [4] Публичный вариант, отзеркаленный на Sploitus (ссылка ниже): слепое чтение плюс дропперINTO OUTFILEв качестве шага RCE, с использованиемper_page=-1в полях категорий. [5] Путь RCE через OUTFILE не зависит от рендеринга поддельных постов, поэтому кеши объектов не блокируют его — блокируют привилегия MySQLFILEи общая доступная для записи директория. Управляемый хостинг почти никогда не даётFILEпользователю БД WordPress, иsecure_file_priv` обычно установлен.

1. Проблема с кешем объектов (реальное отличие)

Примитив поддельного поста через UNION зависит от того, как WP_Query возвращает строки:

  • Режим полных строк — SQL возвращает целые строки wp_posts; внедрённая строка через UNION сразу становится WP_Post. Подделка отображается.
  • Режим разделения (только ID) — SQL возвращает только ID, и каждый ID впоследствии гидратируется через (постоянный) кеш объектов / базу данных. ID поддельной строки не существует, поэтому гидратация молча отбрасывает её. Никаких ошибок, никакого поддельного поста.

На хостах с постоянным кешем объектов заполненный базовый набор результатов переводит WP_Query в режим разделения. Стандартный зонд, используемый публичными PoC —

root@kitploit:~
0) UNION SELECT <поддельная строка> -- -

— оставляет базовый набор заполненным (post_author NOT IN (0) соответствует каждой строке), поэтому за кешем объектов поддельная строка исчезает: зонд доступности даёт ложноотрицательный результат, available() возвращает false, и весь мост без аутентификации сообщается как «мёртвый» на хосте, который на самом деле полностью эксплуатируем. Публичный унификатор документирует ту же границу, указывая «нет постоянного кеша объектов» как жёсткое предусловие.

Этот репозиторий вместо этого опустошает базовый набор:

root@kitploit:~
1) AND 1=0 UNION ALL SELECT <поддельная строка> -- -

При нулевом количестве базовых строк поддельная строка является единственной строкой; запрос остаётся в режиме полных строк; гидратация никогда не выполняется. Одно внедрённое ключевое слово (AND 1=0) — вот вся разница между «канал UNION мёртв» и «полный RCE без аутентификации» на хостах с кешем объектов — а это большинство управляемых продакшн-окружений WordPress. Диагностика, матрица зондов (per_page × форма инъекции).

Примечание по области действия: канал слепого/временного чтения не чувствителен к кешу объектов (подсчёт строк в SQL не включает гидратацию поддельных постов), поэтому слепое чтение каждого PoC работает везде. Что кеш объектов убивает в других PoC, так это именно зависимую от UNION часть: инлайн-извлечение и мост SQLi → админ.

Второй, связанный урок, задокументированный в тематическом исследовании: когда оба канала работают, считайте инлайн-чтение через UNION авторитетным — оракул временных запросов на продакшне давал битовые перевороты под джиттером для значения, которое инлайн-чтение установило однозначно.

2. Выбор пути RCE

Три пути RCE без аутентификации существуют среди публичных PoC:

Этот репозиторий реализует мост: ему не нужны привилегии базы данных, выходящие за рамки того, что уже есть у WordPress, он работает, когда уровни БД и веба ничего не разделяют, и не оставляет файлов для зависимости от привилегии FILE. Оборотная сторона — сложность — мост представляет собой отравленный граф из семи постов, и именно здесь скрывался ложноотрицательный результат §1 по кешу объектов.

3. Безопасные настройки по умолчанию для авторизованного использования

Разработано для запуска против продакшн-систем с авторизацией, а не только в лабораториях:

  • check по умолчанию не наносит вреда — пассивный отпечаток плюс безвредный пакет-маркер; SQL-полезная нагрузка не отправляется, если не указан --confirm-sqli. После применения патча исчезающий триплет маркеров работает как валидация исправления.
  • Тегирование атрибуции — --user-agent для каждой команды, чтобы весь трафик эксплойта был идентифицируем в логах (практическое правило для работы, которое публичные инструменты не устанавливают по умолчанию).
  • Автоматическая очистка — веб-шелл заблокирован токеном под случайным путём и удаляет себя; созданный мостом администратор удаляется после завершения, а его контент переназначается на заимствованный административный аккаунт. Сбой очистки громко сообщается, а не проглатывается.
  • Учёт запросов — каждая команда выводит, сколько запросов она отправила.

4. Чего этот репозиторий не утверждает

  • Никакой новой уязвимости. Обе ошибки — публично раскрытые CVE; двойная вложенная форма пакета, сток author_exclude → author__not_in, примитив поддельного WP_Post через UNION и концепция моста-кастомайзера — всё это публичные техники (наследственность признаётся ниже).
  • Никакого нового примитива эксплуатации. Отличие от публичного ландшафта: исправление кеша объектов с пустой базой и производственными доказательствами, безопасные настройки для продакшна и документация по обнаружению — надёжность и операционная безопасность, а не новизна техники.
  • Строки IoC произвольны. Префиксы логина, слагы плагинов, маркеры шелла и значения User-Agent различаются в каждом варианте и при каждом запуске;

Ссылки

  • Icex0/wp2shell-poc — полная цепочка, общая для данного репозитория — https://github.com/Icex0/wp2shell-poc
  • sergiointel/wp2shell-poc — первый публичный PoC; источник техники создания администратора без взлома — https://github.com/sergiointel/wp2shell-poc
  • 0xsha/wp2shell — единый файл-унификатор шести публичных PoC, с лабораториями Docker и матрицей версия×БД (документирует предусловие кеша объектов) — https://github.com/0xsha/wp2shell
  • Вариант OUTFILE (слепое чтение + дроппер INTO OUTFILE), отзеркален на Sploitus — https://sploitus.com/exploit?id=7CD079AD-E27B-5C54-A696-60635BFDB241
  • Курируемый список публичных PoC и чекеров (для защитников) — https://www.cyberkendra.com/2026/07/wp2shell-guide.html
  • GHSA-ff9f-jf42-662q / GHSA-fpp7-x2x2-2mjf; объявление о выпуске WordPress 7.0.2 — см. ссылки в README.md.
Скачать инструмент
ВозможностьЭтот репозиторийIcex0/wp2shell-pocsergiointel/wp2shell-poc0xsha/wp2shellВариант OUTFILE [4]
Чтение через слепую/временную SQLi без аутентификациидадада (временная)дада
Инлайн-чтение через UNION (1 запрос/значение)дада- [1]- [1]-
Чтение на основе ошибок (EXTRACTVALUE)дада---
Канал UNION сохраняется при постоянном кеше объектовда (пустая база)нет — зонд даёт ложноотрицательные [2]нет документациинет — документированное предусловие [3]н/п [5]
RCE без аутентификации без взломада (мост SQLi → админ)да (тот же мост)да (оригинал моста)да (тот же мост)да, через INTO OUTFILE [5]
Дополнительные предусловия для RCEнет (кроме стандартной установки)нет (на хостах без кеша объектов)нет (то же)нет (то же)привилегия MySQL FILE + общий путь, доступный для записи mysqld и веб-серверу
Ненарушающая проверка/валидация патчада (триплет маркеров; по умолчанию без нагрузки)данетда (block_cannot_read)да (пакет-маркер)
Тегирование атрибуции/User-Agentда, для всех команднетнетфлаг транспортанет
Автоматическая очистка (веб-шелл + созданный админ)даданет документациитолько веб-шелл с токеном-шлюзомдроппер удалён [5]
Руководство по обнаружению для синих командда, по результатам реального запусканетнетлабораторная матрицазаметки по смягчению
Зависимоститолько stdlibтолько stdlibодин файлтолько stdlib, один файлпакет Python ≥3.10
ПутьИспользуетсяДополнительные предусловия
Мост SQLi → админ (подделка строк oEmbed/changeset/nav → POST /wp/v2/users → вход → загрузка плагина)этот репозиторий, sergiointel (оригинал), Icex0, 0xshaничего, кроме стандартной установки
Дроппер INTO OUTFILE (запись PHP-файла через SQLi, получение шелла)Вариант OUTFILE [4]привилегия MySQL FILE, разрешающий secure_file_priv, и директория, доступная для записи mysqld и обслуживаемая веб-сервером
Восстановление хеша → взлом → вход (дамп user_pass, взлом офлайн, затем загрузка плагина)все (как запасной вариант)хеш bcrypt должен быть реально взломан ($wp$2y$, hashcat -m 35500) — медленно, часто безуспешно