
Proof-of-concept di exploit per CVE-2026-12793, un'escalation di privilegi non autenticata in WordPress JetFormBuilder fino alla versione 3.6.2 che crea account amministratore.
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · CVE-2026-12793
JetFormBuilder 3.6.2 - jetmonsters
Sono @abraxas_null. Laboratorio loopback. Il client è CVE-2026-12793-Abraxas-Labs.py.
L'advisory indicava un campo. _jet_engine_booking_form_id è un campo POST, non l'HTTP action=. set_form_id esegue solo absint(). get_blocks_by_post analizza qualsiasi post. Un post normale con i blocchi giusti e _jf_actions register-user administrator è sufficiente. L'hook del router live non è il default del sorgente jet_form_builder_submit=submit. Corretto in 3.6.2.1.
| CVE | CVE-2026-12793 · CVE.org |
| CWE | CWE-269 |
| CVSS | Critical: 9.8 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Prodotto | JetFormBuilder - Dynamic Blocks Form Builder |
| Affette | tutte le versioni fino alla 3.6.2 (inclusa) |
| Corrette | 3.6.2.1 e successive |
| Auth | nessuna |
| Licenza | GNU Affero GPL v3.0 |
| Lab | solo 127.0.0.1 |
POST non autenticato su / con la coppia di hook live, quell'id del post e login/email/password. JSON status: success più un user_id numerico. Quell'utente è un amministratore. La creazione dell'utente è la prova.
Wordfence indicava _jet_engine_booking_form_id. Ho letto set_form_id, poi get_blocks_by_post, poi l'action handler. La tabella delle opzioni riscrive la coppia del router al primo caricamento.
Scopri la coppia come un visitatore: esegui il GET del documento REST pubblico per il post carrier. POST su / con method=ajax, la coppia di hook live e l'id del form. JSON piccolo, decine di byte. Se stai ancora leggendo un DOCTYPE, sei ancora perso.
Vicoli ciechi: jet_form_builder_submit=submit restituisce ~80k di HTML del tema; REST /jet-form-builder/v1/validate-field è la porta sbagliata sulla 3.6.2; combattere con il nonce (load_nonce=hide, use_csrf=false sul fixture); un subscriber perché _jf_actions user_role non era administrator (seed mancante, non una patch); inviare un vero id CPT jet-form-builder (il prodotto che funziona).
Porta 8088. JetFormBuilder 3.6.2. Slug del post carrier jfb-lab-carrier (post, non jet-form-builder) con la coppia di hook stampata nel REST.
Target solo 127.0.0.1:8088 (o il loopback che hai associato).
cd lab
docker compose up --force-recreate
python3 ../CVE-2026-12793-Abraxas-Labs.py
Prova: JSON {"user_id":N,"status":"success"} e /wp/v2/users/<id> è administrator. L'HTML del tema non è quello.
Modi per perdere senza imparare nulla:
/ 200, ~80k HTML, hook predefinitoAggiorna JetFormBuilder alla 3.6.2.1 o successiva. Riesegui CVE-2026-12793-Abraxas-Labs.py contro la build corretta: l'user_id amministratore non deve comparire.
www.wordfence.com/threat-intel/vulnerabilities/id/a61b2ecc-d4e1-4e71-9187-ddc3d3616a29?source=cve
Directory del plugin: jetformbuilder
Browser Trac: plugins.trac.wordpress.org/jetformbuilder
Abraxas Labs: abraxaslabs.tech · github.com/abraxas · @abraxas_null
GNU Affero GPL v3.0. Vedi LICENSE.
Il client comunica con il loopback. Usarlo contro sistemi che non possiedi non è autorizzato da Abraxas Labs. Nessuna garanzia.