
Proof-of-Concept-Exploit für CVE-2026-12793, eine nicht authentifizierte Rechteausweitung in WordPress JetFormBuilder bis 3.6.2, die Administrator-Konten erstellt.
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · CVE-2026-12793
JetFormBuilder 3.6.2 - jetmonsters
Ich bin @abraxas_null. Loopback-Lab. Der Client ist CVE-2026-12793-Abraxas-Labs.py.
Die Advisory nannte ein Feld. _jet_engine_booking_form_id ist ein POST-Feld, nicht HTTP action=. set_form_id macht nur absint(). get_blocks_by_post parst jeden Post. Ein regulärer Post mit den richtigen Blöcken und _jf_actions register-user administrator reicht aus. Der Live-Router-Hook ist nicht der Source-Default jet_form_builder_submit=submit. Gepatcht 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 |
| Produkt | JetFormBuilder - Dynamic Blocks Form Builder |
| Betroffen | alle Versionen bis einschließlich 3.6.2 |
| Gepatcht | 3.6.2.1 und später |
| Auth | keine |
| Lizenz | GNU Affero GPL v3.0 |
| Lab | nur 127.0.0.1 |
Unauthentifizierter POST / mit dem Live-Hook-Paar, dieser Post-ID und login/email/password. JSON status: success plus eine numerische user_id. Dieser Benutzer ist ein Administrator. Das Anlegen des Benutzers ist der Beweis.
Wordfence nannte _jet_engine_booking_form_id. Ich las set_form_id, dann get_blocks_by_post, dann den Action-Handler. Die Option-Tabelle schreibt das Router-Paar beim ersten Laden um.
Entdecke das Paar wie ein Besucher: GET das öffentliche REST-Dokument für den Carrier-Post. POST / mit method=ajax, dem Live-Hook-Paar und der Form-ID. Kleines JSON, zig Bytes. Wenn du noch ein DOCTYPE liest, bist du noch verloren.
Irrwege: jet_form_builder_submit=submit liefert ~80k Theme-HTML; REST /jet-form-builder/v1/validate-field ist die falsche Tür auf 3.6.2; Kampf gegen Nonce (load_nonce=hide, use_csrf=false auf dem Fixture); ein Subscriber, weil _jf_actions user_role nicht administrator war (Seed-Fehler, kein Patch); Einreichen einer echten jet-form-builder CPT-ID (das Produkt funktioniert).
Port 8088. JetFormBuilder 3.6.2. Carrier-Post-Slug jfb-lab-carrier (post, nicht jet-form-builder) mit Hook-Paar, das in REST ausgegeben wird.
Ziel nur 127.0.0.1:8088 (oder das Loopback, an das du gebunden hast).
cd lab
docker compose up --force-recreate
python3 ../CVE-2026-12793-Abraxas-Labs.py
Zeuge: JSON {"user_id":N,"status":"success"} und /wp/v2/users/<id> ist administrator. Theme-HTML ist es nicht.
Wege, zu verlieren, ohne etwas zu lernen:
/ 200, ~80k HTML, Default-HookAktualisiere JetFormBuilder auf 3.6.2.1 oder neuer. Führe CVE-2026-12793-Abraxas-Labs.py erneut gegen den gepatchten Build aus: die Administrator-user_id darf nicht erscheinen.
www.wordfence.com/threat-intel/vulnerabilities/id/a61b2ecc-d4e1-4e71-9187-ddc3d3616a29?source=cve
Plugin-Verzeichnis: jetformbuilder
Trac-Browser: plugins.trac.wordpress.org/jetformbuilder
SVN-Tags: plugins.svn.wordpress.org/jetformbuilder
Abraxas Labs: abraxaslabs.tech · github.com/abraxas · @abraxas_null
GNU Affero GPL v3.0. Siehe LICENSE.
Der Client kommuniziert mit Loopback. Die Verwendung gegen Systeme, die dir nicht gehören, ist von Abraxas Labs nicht autorisiert. Keine Gewährleistung.