abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · CVE-2026-12793
JetFormBuilder 3.6.2 - jetmonsters
我是 @abraxas_null。回环实验环境。客户端是 CVE-2026-12793-Abraxas-Labs.py。
该公告指出了一个字段。_jet_engine_booking_form_id 是一个 POST 字段,而不是 HTTP action=。set_form_id 只做 absint()。get_blocks_by_post 会解析任意文章。一篇带有正确区块和 _jf_actions register-user administrator 的普通文章就足够了。实时路由钩子不是源默认的 jet_form_builder_submit=submit。已在 3.6.2.1 中修复。
| CVE | CVE-2026-12793 · CVE.org |
| CWE | CWE-269 |
| CVSS | 严重:9.8 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| 产品 | JetFormBuilder - Dynamic Blocks Form Builder |
| 受影响 | 所有版本 直至 3.6.2(含) |
| 已修复 | 3.6.2.1 及更高版本 |
| 认证 | 无 |
| 许可证 | GNU Affero GPL v3.0 |
| 实验环境 | 仅 127.0.0.1 |
未认证的 POST /,携带实时钩子对、该文章 id 以及 login/email/password。JSON status: success 加上一个数字 user_id。该用户是管理员。创建该用户就是证明。
Wordfence 指出了 _jet_engine_booking_form_id。我阅读了 set_form_id,然后是 get_blocks_by_post,再然后是动作处理器。选项表在首次加载时会重写路由对。
像访客一样发现该路由对:GET 载体文章的公开 REST 文档。POST /,携带 method=ajax、实时钩子对和表单 id。很小的 JSON,几十字节。如果你还在读 DOCTYPE,那你还没找对路。
走过的弯路:jet_form_builder_submit=submit 返回约 80k 的主题 HTML;REST /jet-form-builder/v1/validate-field 在 3.6.2 上是错误的入口;与 nonce 较劲(fixture 上的 load_nonce=hide、use_csrf=false);一个 subscriber,因为 _jf_actions 的 user_role 不是 administrator(种子遗漏,不是补丁);提交真实的 jet-form-builder CPT id(产品正常工作)。
端口 8088。JetFormBuilder 3.6.2。载体文章 slug jfb-lab-carrier(post,不是 jet-form-builder),钩子对打印在 REST 中。
目标仅为 127.0.0.1:8088(或你绑定的回环地址)。
cd lab
docker compose up --force-recreate
python3 ../CVE-2026-12793-Abraxas-Labs.py
见证:JSON {"user_id":N,"status":"success"} 且 /wp/v2/users/<id> 是 administrator。主题 HTML 不是。
毫无收获的失败方式:
/ 200,约 80k HTML,默认钩子将 JetFormBuilder 更新至 3.6.2.1 或更新版本。针对已修复的构建重新运行 CVE-2026-12793-Abraxas-Labs.py:管理员的 user_id 必须不再出现。
www.wordfence.com/threat-intel/vulnerabilities/id/a61b2ecc-d4e1-4e71-9187-ddc3d3616a29?source=cve
插件目录:jetformbuilder
Abraxas Labs:abraxaslabs.tech · github.com/abraxas · @abraxas_null
GNU Affero GPL v3.0。参见 LICENSE。
该客户端仅与回环地址通信。将其用于你并不拥有的系统,未获 Abraxas Labs 授权。不提供任何担保。