单文件、自包含扫描器,用于 Joomla! JCE Editor < 2.9.99.5 — 未认证远程代码执行(CVE-2026-48907)
作者:Hussein Mohamed (masta ghimau)
[!CAUTION]
🚨 免责声明 — 使用前请阅读
这是一款侵入式安全测试工具。
THIS TOOL IS FOR AUTHORIZED SECURITY ASSESSMENTS ONLY.
Scanning systems you do NOT own or have WRITTEN PERMISSION to test is ILLEGAL in most jurisdictions.
The author (Hussein Mohamed masta ghimau) accepts ABSOLUTELY NO liability for any misuse, damage, legal action, or data loss arising from the use of this tool.
By running this scanner you agree to:
Only scan assets YOU OWN or have EXPLICIT WRITTEN CONSENT.
Understand that uploads a harmless POC PHP file to the target server as part of the intrusive accuracy check.
Manually delete every uploaded POC file immediately after use.
USE AT YOUR OWN RISK.
[!IMPORTANT] 为什么“侵入式”对准确性很重要: 为了达到尽可能高的置信度并消除误报,该工具会执行 实时数学验证 payload 测试。它会上传一行安全的 PHP 概念验证代码,然后通过验证服务器返回的精确数学计算结果来确认远程代码执行。仅读取版本字符串的非侵入式扫描器可能会漏掉向后移植的补丁或自定义热修复。此工具会验证漏洞是否确实存在。 因此,它在设计上就是侵入式的 — 请明智使用,并确保获得完全授权。
masta-cve-2026-48907.py 是一个完全原创、单文件的 Python 扫描器,用于检测运行 JCE Editor 组件版本低于 2.9.99.5 的 Joomla! 实例中的 CVE-2026-48907。
requests/httpx 依赖。.py 文件,可放置在任何地方。openpyxl 或 rich 时也能运行,但安装后显示效果更佳。ThreadPoolExecutor 快速扫描整个 URL 列表。.xlsx) 报告。| 功能 | 描述 |
|---|---|
| 🔍 多来源指纹识别 | 通过 meta 标签、清单、静态资源、语言文件和 JCE 特定端点检测 Joomla! 和 JCE |
| 🛡 WAF 检测 | 识别 Cloudflare、Incapsula、Sucuri 和 ModSecurity 拦截 |
| 🧪 安全侵入式 POC | 上传一个无害的 PHP 数学验证器(带有归属标识并明确标注需清理) |
| 📊 卡片式终端 UI | 每个目标显示丰富的 Panel + Table 卡片(或 ANSI 回退) |
| 📁 Excel 报告 | 自动生成包含表头、冻结窗格、列宽和颜色编码状态单元格的 .xlsx |
| ⚙️ 代理支持 | 通过 Burp / ZAP / 任意 HTTP 代理路由所有流量 |
| 🧵 多线程 | 可配置工作线程数,用于批量列表 |
openpyxlrich其余均为 Python 标准库(urllib、http.cookiejar、argparse、threading 等)。
# 1. Clone the repo
git clone https://github.com/YOUR_USERNAME/masta-cve-2026-48907.git
cd masta-cve-2026-48907
# 2. (Optional but recommended) install extras
pip install -r requirements.txt
你也可以无需安装任何东西直接运行该脚本(仅终端输出,无 Excel):
python masta-cve-2026-48907.py -u https://target.com
python masta-cve-2026-48907.py -u https://target.com/joomla
python masta-cve-2026-48907.py -l targets.txt -t 10
python masta-cve-2026-48907.py -u https://target.com -p http://127.0.0.1:8080
python masta-cve-2026-48907.py -h
-u URL Single target URL
-l FILE File containing URLs (one per line)
-o OUTPUT Custom Excel output path
-t THREADS Concurrent threads (default: 5)
-p PROXY Proxy URL (e.g. http://127.0.0.1:8080)
--timeout N Request timeout in seconds (default: 12)
--verify-ssl Enable SSL certificate verification (default: disabled)
-v, --verbose Show full per-target result cards during scan
-d, --debug Show internal HTTP request traces
--no-color Disable colored terminal output
以下是从输入到最终报告的完整扫描逻辑。
flowchart TD
A[User provides -u URL or -l FILE] --> B[Normalize & deduplicate targets]
B --> C[Launch ThreadPoolExecutor]
C --> D[For each target]
D --> E1[probe_joomla<br/>GET /, meta, manifest,<br/>static assets, README]
E1 --> F1{Joomla! detected?}
F1 -- No --> R1[Status: NOT_JOOMLA]
F1 -- Yes --> E2[probe_jce<br/>GET jce.xml, endpoints,<br/>JCE-specific markers]
E2 --> F2{JCE detected?}
F2 -- No --> R2[Status: SAFE<br/>JCE not installed]
F2 -- Yes --> F3{Version >= 2.9.99.5?}
F3 -- Yes --> R3[Status: PATCHED]
F3 -- No --> E3[extract_csrf<br/>Parse Joomla! CSRF token]
E3 --> F4{Token found?}
F4 -- No --> R4[Status: PATCHED<br/>CSRF missing → likely hardened]
F4 -- Yes --> E5[Build math-verifier payload<br/>masta-cve-2026-48907-poc ...]
E5 --> E6[Vector 1: Multipart POST<br/>profile_file upload to tmp/]
E6 --> F5{HTTP 200?}
F5 -- Yes --> E7["GET /tmp/masta-{rand}.xml.php"]
E7 --> F6{Body contains<br/>MATHOK:3105:END ?}
F6 -- Yes --> R5[Status: VULNERABLE<br/>Confidence: CONFIRMED]
F6 -- No --> E8[Vector 2: Browser chain<br/>upload + rename via RPC]
E8 --> F7{RCE confirmed?}
F7 -- Yes --> R5
F7 -- No --> E9[Check for WAF block page]
E9 --> F8{WAF detected?}
F8 -- Yes --> R6[Status: BLOCKED_BY_WAF]
F8 -- No --> R7[Status: SAFE]
F5 -- No --> E8
R1 --> S[Append result to Excel + Terminal card]
R2 --> S
R3 --> S
R4 --> S
R5 --> S
R6 --> S
R7 --> S
S --> D
D --> T[Print Summary Dashboard]
T --> U[Save Excel Report to reports/]
U --> V[Print cleanup reminder for<br/>all uploaded POC files]
style R5 fill:#ff0000,stroke:#333,color:#fff
style R3 fill:#32CD32,stroke:#333,color:#000
style R6 fill:#FFD700,stroke:#333,color:#000| 状态 | 含义 | 置信度 |
|---|---|---|
| VULNERABLE | PHP payload 已执行并通过数学验证。RCE 真实存在。 | CONFIRMED |
| VULNERABLE_UPLOAD_ONLY | 文件上传成功,但 PHP 执行被阻止。可利用但未确认 RCE。 | HIGH |
| PATCHED | 检测到 Joomla! / JCE 且版本 >= 2.9.99.5,或 CSRF 已加固。 | HIGH / MEDIUM |
| SAFE | 未安装 JCE,或利用向量失败(可能已修补/加固)。 | HIGH |
| BLOCKED_BY_WAF | Web 应用防火墙阻止了测试。 | LOW |
| NOT_JOOMLA | 目标似乎不是 Joomla! 站点。 | CERTAIN |
| ERROR | 网络 / 连接问题 / 未处理异常。 | LOW |
将下图替换为你实际的终端截图。

将下图替换为你实际的 Excel 报告截图。

提示:在本地测试 Joomla! 实例上运行扫描器以生成真实截图,将其提交到 assets/ 文件夹后,它们会在 GitHub 上自动显示。
该扫描器会向目标服务器上传一个无害的 PHP 概念验证文件以确认漏洞。工具始终会在扫描结束时打印提醒信息,列出所有已上传的文件。测试后你必须手动删除它们。 这些文件命名为 masta-{random}.xml.php 或类似名称,并包含明文归属行:
masta-cve-2026-48907-poc. This test is done as part of Security Assessment - masta ghimau.
使用本软件即表示你承认对自己的行为承担全部责任。该代码按“原样”提供,不附带任何担保。如果你不了解运行侵入式 RCE 验证扫描器的含义,请不要使用此工具。
🛡 Use it to protect your own assets. Not to harm others.