
Preuve de concept d'exploit pour CVE-2026-12793, une élévation de privilèges non authentifiée dans WordPress JetFormBuilder jusqu'à la version 3.6.2 qui crée des comptes administrateur.
abraxaslabs.tech · github.com/abraxas · @abraxas_null · CVE-2026-12793
JetFormBuilder — Dynamic Blocks Form Builder 3.6.2 — jetmonsters
Le plugin JetFormBuilder — Dynamic Blocks Form Builder pour WordPress est vulnérable à une élévation de privilèges dans toutes les versions jusqu'à 3.6.2 incluse. Cela est dû au fait que le plugin ne vérifie pas qu'un ID de formulaire soumis appartient à un formulaire JetFormBuilder avant d'analyser le contenu du post référencé comme schéma de formulaire et d'exécuter un callback côté serveur Advanced Validation. Cela permet à des attaquants non authentifiés de créer un nouveau compte utilisateur de niveau administrateur.
| CVE | CVE-2026-12793 · CVE.org |
| CWE | CWE-269 |
| CVSS | Critique : 9.8 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Produit | JetFormBuilder — Dynamic Blocks Form Builder |
| Affecté | toutes les versions jusqu'à 3.6.2 (incluse) |
| Corrigé | 3.6.2.1 et ultérieures |
| Auth | aucune (voir la source map) |
| Lab | 127.0.0.1 uniquement · pack de divulgation fournisseur/client, pas un scanner |
L'avis nomme _jet_engine_booking_form_id et Advanced Validation. Ce champ POST est Form_Handler::$form_key. Le hook du routeur n'est PAS la valeur par défaut de la source jet_form_builder_submit=submit ; c'est la paire randomisée gfb_request_args_key/value. Les noms de méthodes PHP ne sont pas des action= HTTP. REST validate-field est la mauvaise route sur 3.6.2 (validate_form_post_type s'exécute déjà).
POST/GET /?rest_route=/wp/v2/posts&slug=jfb-lab-carrier -> id plus JFB_HOOK_KEY / JFB_HOOK_VAL (options-tab gfb_request_args_*)POST / REQUEST[hook_key]=hook_val method=ajax (NOT jet_form_builder_submit=submit)Form_Request_Router::listen (includes/request/request-router.php) uses Form_Handler::$hook_key/$hook_valForm_Handler::process_form -> setup_form -> set_form_id absint only (includes/form-handler.php:150-154, 183-200, 240)send_form: Action_Handler::set_form_id -> set_form_actions from _jf_actions of that post (includes/actions/action-handler.php:71-117)Request_Handler::set_form_data -> Block_Helper::get_blocks_by_post parse_blocks any post (includes/blocks/block-helper.php:186-201; includes/request/request-handler.php:30-33)block-parsers Module::init_request apply those blocks (modules/block-parsers/module.php:101-119)Default_Process_Event runs Register_User_Action::do_action wp_insert_user with settings.user_role (modules/actions-v2/register-user/register-user-action.php:66-215)Le POST JSON contient status success et un user_id numérique. Un GET /?rest_route=/wp/v2/users/<user_id> de suivi ou une liste ultérieure incluant login poc_12793 avec le rôle administrator. Le login unique poc_12793 est le marqueur — pas le HTML hello-world.
À faire en premier : Mettre à jour JetFormBuilder — Dynamic Blocks Form Builder vers 3.6.2.1 ou une version ultérieure.
Vérifier après la mise à jour
CVE-2026-12793-Abraxas-Labs.py contre la version corrigée : la preuve mappée ne doit pas apparaître.Si vous ne pouvez pas mettre à jour immédiatement
Cibler uniquement http://127.0.0.1:8088 (ou le loopback que vous avez lié). Ne pointez pas ce script vers Internet.
python3 CVE-2026-12793-Abraxas-Labs.py
Le succès est la preuve ci-dessus dans le corps de la réponse. Un HTML 200 générique ne l'est pas.
www.wordfence.com/threat-intel/vulnerabilities/id/a61b2ecc-d4e1-4e71-9187-ddc3d3616a29?source=cve
Répertoire de plugins : jetformbuilder
Navigateur Trac : plugins.trac.wordpress.org/jetformbuilder
Tags SVN : plugins.svn.wordpress.org/jetformbuilder
Abraxas Labs : abraxaslabs.tech · github.com/abraxas · @abraxas_null
# CVE-2026-12793 (structured records)
- input: `https://nvd.nist.gov/vuln/detail/CVE-2026-12793`
- CWE: CWE-269
- published: 2026-09-16T04:17:56.110
## NVD description
The JetFormBuilder — Dynamic Blocks Form Builder plugin for WordPress is vulnerable to Privilege Escalation in all versions up to, and including, 3.6.2. This is due to the plugin not validating that a submitted form ID belongs to a JetFormBuilder form before parsing the referenced post's content as form schema and executing an Advanced Validation server-side callback. This makes it possible for unauthenticated attackers to create a new administrator-level user account.
## MITRE description
The JetFormBuilder — Dynamic Blocks Form Builder plugin for WordPress is vulnerable to Privilege Escalation in all versions up to, and including, 3.6.2. This is due to the plugin not validating that a submitted form ID belongs to a JetFormBuilder form before parsing the referenced post's content as form schema and executing an Advanced Validation server-side callback. This makes it possible for unauthenticated attackers to create a new administrator-level user account.
## Affected
- jetmonsters JetFormBuilder — Dynamic Blocks Form Builder 0 affected
## References (JSON sources only)
- https://plugins.trac.wordpress.org/changeset/3575346/jetformbuilder
- https://www.wordfence.com/threat-intel/vulnerabilities/id/a61b2ecc-d4e1-4e71-9187-ddc3d3616a29?source=cve
- https://github.com/advisories/GHSA-579w-q4cr-j8hc
- https://nvd.nist.gov/vuln/detail/CVE-2026-12793
## GitHub advisory
The JetFormBuilder — Dynamic Blocks Form Builder plugin for WordPress is vulnerable to Privilege...
The JetFormBuilder — Dynamic Blocks Form Builder plugin for WordPress is vulnerable to Privilege Escalation in all versions up to, and including, 3.6.2. This is due to the plugin not validating that a submitted form ID belongs to a JetFormBuilder form before parsing the referenced post's content as form schema and executing an Advanced Validation server-side callback. This makes it possible for unauthenticated attackers to create a new administrator-level user account.
Ce pack est destiné au fournisseur, au propriétaire du site et aux labs sous licence. Le script communique avec 127.0.0.1. L'utiliser contre des systèmes que vous ne possédez pas n'est pas autorisé par Abraxas Labs. Aucune garantie.
SSR path (same schema): Server_Side_Rule::validate_custom call_user_func if the field rule value is a PHP function not in NOT_ALLOWED (modules/validation/advanced-rules/server-side-rule.php:187-194)