
Proof-of-concept de exploit para CVE-2026-12793, uma escalada de privilégios não autenticada no WordPress JetFormBuilder até a versão 3.6.2 que cria contas de administrador.
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · CVE-2026-12793
JetFormBuilder 3.6.2 - jetmonsters
Sou @abraxas_null. Laboratório em loopback. O cliente é CVE-2026-12793-Abraxas-Labs.py.
O advisory nomeou um campo. _jet_engine_booking_form_id é um campo POST, não HTTP action=. set_form_id apenas faz absint(). get_blocks_by_post analisa qualquer post. Um post comum com os blocos corretos e _jf_actions register-user administrator é suficiente. O hook do roteador ativo não é o padrão de origem jet_form_builder_submit=submit. Corrigido em 3.6.2.1.
| CVE | CVE-2026-12793 · CVE.org |
| CWE | CWE-269 |
| CVSS | Crítico: 9.8 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Produto | JetFormBuilder - Dynamic Blocks Form Builder |
| Afetado | todas as versões até 3.6.2 (inclusive) |
| Corrigido | 3.6.2.1 e posteriores |
| Autenticação | nenhuma |
| Licença | GNU Affero GPL v3.0 |
| Laboratório | apenas 127.0.0.1 |
POST não autenticado em / com o par de hooks ativo, aquele id de post e login/email/password. JSON status: success mais um user_id numérico. Esse usuário é um administrador. Criar o usuário é a prova.
A Wordfence nomeou _jet_engine_booking_form_id. Eu li set_form_id, depois get_blocks_by_post, depois o handler da ação. A tabela de opções reescreve o par do roteador no primeiro carregamento.
Descubra o par como um visitante: faça GET do documento REST público do post transportador. POST em / com method=ajax, o par de hooks ativo e o id do formulário. JSON pequeno, dezenas de bytes. Se você ainda está lendo um DOCTYPE, você ainda está perdido.
Caminhos errados: jet_form_builder_submit=submit retorna ~80k de HTML do tema; REST /jet-form-builder/v1/validate-field é a porta errada na 3.6.2; lutar contra o nonce (load_nonce=hide, use_csrf=false no fixture); um subscriber porque o user_role de _jf_actions não era administrator (falha de seed, não um patch); enviar um id real de CPT jet-form-builder (o produto funcionando).
Porta 8088. JetFormBuilder 3.6.2. Slug do post transportador jfb-lab-carrier (post, não jet-form-builder) com o par de hooks impresso no REST.
Alvo apenas 127.0.0.1:8088 (ou o loopback que você vinculou).
cd lab
docker compose up --force-recreate
python3 ../CVE-2026-12793-Abraxas-Labs.py
Testemunho: JSON {"user_id":N,"status":"success"} e /wp/v2/users/<id> é administrator. HTML do tema não é isso.
Formas de perder sem aprender nada:
/ 200, ~80k HTML, hook padrãoAtualize o JetFormBuilder para 3.6.2.1 ou mais recente. Execute novamente CVE-2026-12793-Abraxas-Labs.py contra a build corrigida: o user_id de administrador não deve aparecer.
www.wordfence.com/threat-intel/vulnerabilities/id/a61b2ecc-d4e1-4e71-9187-ddc3d3616a29?source=cve
Diretório de plugins: jetformbuilder
Navegador Trac: plugins.trac.wordpress.org/jetformbuilder
Tags SVN: plugins.svn.wordpress.org/jetformbuilder
Abraxas Labs: abraxaslabs.tech · github.com/abraxas · @abraxas_null
GNU Affero GPL v3.0. Consulte LICENSE.
O cliente se comunica com o loopback. Usá-lo contra sistemas que você não possui não é autorizado pela Abraxas Labs. Sem garantia.