针对 CVE-2026-102425 的 Python 3 PoC —— balbooa.com Balbooa Forms Joomla 扩展 —— 通过可选 提交后 PHP 操作(eval())中的 字段短代码注入 实现 未认证远程代码执行。
| | |
|---|---|
| PoCbit | https://pocbit.org/pocs/cve-2026-102425 |
| CVE.org | https://www.cve.org/CVERecord?id=CVE-2026-102425 (已发布 2026-09-29) |
| NVD | https://nvd.nist.gov/vuln/detail/CVE-2026-102425 |
| CNA | Joomla! Project |
| 组件 | com_baforms |
| 受影响版本 | 1.0.0 – 2.4.3.3 |
| 修复版本 | ≥ 2.4.3.4 |
| CWE | CWE-94(代码注入) |
| CVSS 4.0 | 9.5 严重 — CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H |
| 发现者 | Łukasz Rybak, Sergiy Tryzhychynskyi |
Balbooa Forms 允许管理员定义 在公开表单提交后运行的 PHP 代码。该 PHP 可能包含 表单字段短代码。在 eval() 之前,组件会将每个短代码替换为 访客提交的原始值(无转义)。
CVE-2026-102425 在 同时 满足以下所有条件时可被利用:
扩展版本 < 2.4.3.4。
一个 公开 表单使用了可选的 提交后 PHP 操作。
该 PHP 在双引号 PHP 字符串中插入了攻击者可控的字段短代码(经典逃逸:";echo …;//)。
CVSS AT:P(攻击要求:存在)意味着必须存在易受攻击的 配置 —— 仅安装该组件是不够的。
这 不是 CVE-2026-67364([URL 参数 = X] 查询短代码,已在 2.4.3.2 修复)。仅当你有意测试该独立问题时,才使用 --include-67364。
同一组件、同一发布系列:还需修补 CVE-2026-102424、-101127、-101112、-101126(参见 mySites.guru)。
| 模式 | 行为 |
|------|----------|
| check | com_baforms、清单 version、affected_version(< 2.4.3.4)、通过 loadAjaxForm / embed 检测 public_form_detected |
| check 默认命中 | 仅当 受影响 且 公开表单 HTML 可加载时写入 hits.txt(利用队列) |
| check --all-affected | 同时列出任何处于易受攻击版本的主机(嘈杂的 FOFA 分类) |
| check --aggressive | 更多路径、loadAjaxForm ID 扫描、更多表单探测 |
| exploit | form.message 提交(现代)+ 旧式任务;字段短代码 载荷(双引号逃逸) |
| exploit --include-67364 | 增加 URL 参数短代码尝试(67364 类) |
| exploit --aggressive | 完整抓取 + loadAjaxForm 发现(较慢) |
| --lab | 本地模拟:双引号 eval + 字段注入 |
| mass | --list + -j → JSONL、hits.txt、exploited.txt |
JSONL 行包含 cve_state、cve_record、nvd、cvss_v4_vector、attack_requirements、pocbit_page。
在 exploit 时,PoC 首先通过同一字段短代码 RCE 尝试 file_put_contents,以在常见 Joomla 路径(images/baforms/uploads/、images/、…)下放置本地 up.php(multipart 上传器),然后在提交响应中确认 POCBIT-102425-OK。如果该文件可通过 Web 访问,则打印 shell_url 并追加到 exploited.txt。
Python 3.9+
pip install requests urllib3 colorama
cd CVE-2026-102425
python poc.py # interactive
python poc.py hits.txt # mass exploit
python poc.py --check fofa_hosts.txt # mass scan → hits.txt
python poc.py -u https://site.tld
python poc.py --lab
python poc.py --help
# Full CLI / JSONL: python _engine.py --help
交互式批量 check(hits.txt,12 线程,详细输出):

| 步骤 | 请求 |
|------|---------|
| 加载表单 | GET index.php?option=com_baforms&task=form.loadAjaxForm&id=N |
| 提交 | 向表单 action 发送 POST,带 task=form.message、form-id、字段(参见 ba-form.js) |
| 避免 | 在许多 J4 站点的前端任务上使用 format=json(无效的控制器 JSON) |
旧式站点可能使用 view=form&form_id=N 或 form.submitForm。
将 Balbooa Forms 升级到 2.4.3.4+。
在修补前,移除嵌入字段或 URL 短代码的 提交后 PHP 操作。
在公开提交上启用 reCAPTCHA。
审计表单、管理员用户和 images/baforms/uploads/。
仅限授权的安全测试。
CVE-2026-102425 PoC (PoCbit) — Joomla Balbooa Forms (com_baforms) 1.0.0–2.4.3.3: unauth RCE via field shortcode in PHP-after-submission eval() (CVSS 4.0 9.5 AT:P). check + exploit + mass. https://pocbit.org/pocs/cve-2026-102425