Инструмент для обнаружения и проверки уязвимости wp2shell в ядре WordPress (CVE-2026-63030 / CVE-2026-60137). Режимы выбираются с помощью флага, а цель указывается позиционно. --scan снимает отпечаток версии ядра и подтверждает доступность маршрута REST /batch/v1 без отправки эксплойта; режимы --check/--read/--shell/--rce/--root-prereq являются PoC для проверки в авторизованной лабораторной среде.
wp2shell.py — это единый скрипт, использующий только стандартную библиотеку Python — без внешних зависимостей. Каждый запуск выводит баннер ZephrSec в stderr (он не попадает в stdout, поэтому вывод JSON при --scan -j остаётся нетронутым).
Флаги команд
Требуется ровно один флаг режима; цель задаётся позиционно (URL для каждого режима или список хостов для --scan).
Неразрушающая проверка уязвимости: определение версии + подтверждение доступности маршрута REST /batch/v1. Эксплойт не отправляется.
--check
Подтверждает слепую time-based SQLi с помощью безвредного дифференциального зонда.
--read
Извлекает данные через слепую SQLi (по заданному шаблону или с помощью необработанного скалярного SQL-выражения).
--shell
Цепочка RCE с аутентификацией, использующая взломанный/восстановленный пароль администратора.
--rce
RCE без учётных данных (pre-auth): создаёт собственного администратора через SQLi, затем развёртывает самоочищающийся веб-шелл.
--root-prereq
Безопасная проверка предварительных условий для повышения привилегий от оболочки до root; выполняет только диагностику, никогда не выполняет локальное повышение привилегий.
Флаги опций
Флаг
Применяется к
Назначение
-f, --file
--scan
Читать хосты из файла (по одному на строку; строки с # пропускаются).
-j, --json
--scan
Выводить результаты в формате JSON в stdout.
-t, --threads
--scan
Уровень параллелизма сканирования (по умолчанию 10).
--prefix
--check/--read
Префикс таблиц БД (по умолчанию wp_).
--delay
--check/--read
Количество секунд SLEEP для временного оракула (по умолчанию 0.15).
--repeats
--check/--read
Медиана по N зондам на бит; увеличивайте при зашумлённых каналах (по умолчанию 1).
--preset
--read
Встроенная цель: version, database, db_user, users, siteurl (по умолчанию users).
--expr
--read
Необработанное скалярное SQL-выражение для извлечения (переопределяет --preset).
--max-len
--read
Максимальная длина извлекаемой строки (по умолчанию 128).
--user
--shell/--root-prereq
Имя пользователя администратора для входа (по умолчанию admin).
--password
--shell/--root-prereq
Пароль администратора в открытом виде (взломайте хеш из ; требуется для этих режимов).
Опции: -f/--file файл с хостами (по одному на строку), -j/--json вывод JSON, -t/--threads параллелизм (по умолчанию 10).
PoC для проверки
Режимы --check/--read/--shell/--rce/--root-prereq отправляют живые полезные нагрузки эксплойтов. Запускайте их только на встроенной локальной лаборатории или на других системах, которыми вы владеете и на тестирование которых у вас есть явное разрешение. --shell и --rce выполняют удалённое выполнение команд и предназначены для лабораторных/авторизованных целей; --rce на хосте, не являющемся loopback, требует --authorized. --root-prereq использует тот же диагностический плагин с токеном для проверки предварительных условий для повышения привилегий, но не выполняет локальное повышение привилегий.
--shell требует восстановленного/взломанного пароля администратора. --rce — это цепочка без учётных данных (pre-auth): она создаёт собственного администратора через SQLi (oEmbed → changeset → реентерабельный parse_request), затем развёртывает веб-шелл — пароль не требуется.
--shell, --rce и --root-prereq запрашивают интерактивное подтверждение y/N перед отправкой любой полезной нагрузки, выполняющей код (они прерываются при неинтерактивном/EOF stdin). Передайте -y/--yes, чтобы пропустить запрос для автоматизации в лаборатории или для авторизованной цели.
Патчи, использованные для обоснования PoC, сохранены в poc/diffs/, с исследовательскими заметками в poc/RESEARCH.md. SQLi полностью реконструируется из исправления author__not_in. Цепочка без учётных данных --rce (oEmbed → changeset → повторный вход → создание администратора) воспроизводит стандартную RCE на встроенной лаборатории; --shell — это альтернативный путь через восстановленные/взломанные учётные данные администратора для аутентифицированной загрузки плагина и выполнения команд.