
يفحص WordPress Forminator بحثًا عن ثغرة CVE-2026-15748 لتنفيذ التعليمات البرمجية عن بُعد (RCE) بدون مصادقة. يكتشف المواقع المعرضة للخطر، ويزحف عبر النماذج، ويستخرج nonces، وينفذ اختبارات رفع آمنة.
من إعداد Yora
للاستخدام التعليمي والاختبار المصرح به فقط
CVE-2026-15748 هي ثغرة تتعلق بإضافة Forminator في ووردبريس.
صُممت هذه الأداة للمساعدة في البحث الأمني والاختبار المصرح به ضد تثبيتات ووردبريس التي تستخدم Forminator.
يقوم الماسح بعدة مراحل فحص، بدءًا من اكتشاف ووردبريس، والبحث عن Forminator، وتحديد الإصدار، وزحف الصفحات، وصولاً إلى فحص تكوين نماذج معينة.
⚠️ استخدم هذه الأداة فقط على مواقع الويب أو الخوادم أو المختبرات أو الأنظمة التي تملكها أو حصلت على إذن لاختبارها.
| الميزة | الوصف |
|---|---|
| 🔎 اكتشاف WordPress | يكتشف ما إذا كان الهدف يستخدم ووردبريس |
| 🔌 اكتشاف Forminator | يكتشف تثبيت إضافة Forminator |
| 🏷️ اكتشاف الإصدار | يحصل على إصدار Forminator من المصادر المتاحة |
| 📊 فحص الإصدار | يقارن الإصدار بالحد 1.56.1 |
| 🕷️ زحف الموقع | يبحث عن الصفحات ذات الصلة على الهدف |
| 🗺️ اكتشاف خريطة الموقع | يفحص عدة خرائط موقع لووردبريس |
| 📝 اكتشاف النماذج | يكتشف نماذج Forminator معينة |
| 🔐 اكتشاف Nonce | يحاول العثور على nonce الخاص بـ Forminator |
| ⚡ تعدد الخيوط | يدعم عدة أهداف في وقت واحد |
| 🔁 إعادة المحاولة | يُعاد تنفيذ الطلبات الفاشلة |
| ⏱️ تأخير الطلبات | يستخدم تأخيرًا عشوائيًا بين الطلبات |
| 📄 نتائج مفصلة | يحفظ نتائج الفحص في ملف |
تتطلب الأداة:
requestspackagingurllib3تثبيت التبعيات:
pip install requests packaging urllib3
أو:
python -m pip install requests packaging urllib3
استنساخ المستودع:
git clone https://github.com/yora1928/cve-2026-15748.git
الانتقال إلى المجلد:
cd cve-2026-15748
تثبيت التبعيات:
pip install requests packaging urllib3
التحقق من Python:
python --version
الإعدادات الرئيسية موجودة في قسم CONFIG داخل السكربت:
TIMEOUT = 15
THREADS = 8
VULN_MAX = "1.56.1"
MAX_RETRIES = 3
DELAY_MIN = 1.0
DELAY_MAX = 2.5
CRAWL_DEPTH = 2
هذه الإعدادات موجودة مباشرة في الكود المصدري.
تدعم الأداة طريقتين لإدخال الهدف:
python cve-2026-15748.py -u https://target.com
المعاملات:
-u
--url
يُستخدم لإدخال هدف واحد.
أنشئ ملفًا:
targets.txt
مثال:
https://target1.com
https://target2.com
https://target3.com
ثم شغّل:
python cve-2026-15748.py -f targets.txt
المعاملات:
-f
--file
يقرأ الكود المصدري كل سطر كهدف ويحذف الأسطر الفارغة.
الافتراضي:
8 threads
لتغييره:
python cve-2026-15748.py -f targets.txt -t 10
مثال آخر:
python cve-2026-15748.py -f targets.txt -t 5
المعاملات:
-t
يحتوي السكربت أيضًا على خيار:
--upload
مثال:
python cve-2026-15748.py -u https://target.com --upload
أو:
python cve-2026-15748.py -f targets.txt --upload
⚠️ يقوم هذا الوضع بإرسال طلبات POST/رفع إلى نقطة نهاية Forminator. استخدمه فقط على الأنظمة التي تسمح صراحةً بهذا الاختبار.
يستدعي تنفيذ --upload الدالة upload_test() عند استيفاء شروط فحص معينة.
python cve-2026-15748.py -u https://target.com
python cve-2026-15748.py -f targets.txt
python cve-2026-15748.py -f targets.txt -t 10
python cve-2026-15748.py -u https://lab.example.com --upload
python cve-2026-15748.py -f authorized-targets.txt -t 5 --upload
بشكل عام، يعمل الماسح وفق التسلسل التالي:
Target
│
▼
Normalize URL
│
▼
WordPress Detection
│
├── Tidak ditemukan
│ └── NOT WORDPRESS
│
▼
Crawl Pages
│
▼
Forminator Detection
│
▼
Version Detection
│
▼
Version Comparison
│
▼
Form Detection
│
▼
Result
يفحص الماسح عدة نقاط نهاية:
/wp-login.php
/wp-json
/xmlrpc.php
/wp-content
بالإضافة إلى حالات HTTP معينة، يبحث الماسح أيضًا عن مؤشرات مثل:
wp-content
wp-includes
في استجابة الصفحة.
إذا لم يتم العثور على مؤشرات ووردبريس:
[NOT WORDPRESS]
ينشئ الماسح قائمة بالصفحات من عدة مصادر.
من بين المسارات التي يتم فحصها:
/contact
/kontak
/hubungi-kami
/form
/forms
/formulir
/upload
/unggah
/submit
/kirim
/gallery
/kontribusi
/daftar
/pendaftaran
/registration
/register
/file-upload
/submit-document
/unggah-berkas
/upload-file
يفحص الكود المصدري أيضًا:
/sitemap.xml
/sitemap_index.xml
/wp-sitemap.xml
ويستخرج الروابط الداخلية من الصفحة الرئيسية.
يبحث الماسح عن معرفات Forminator مثل:
forminator-form-<ID>
بالإضافة إلى بعض أنماط HTML الأخرى.
بالنسبة للنماذج التي يتم العثور عليها، يتحقق الماسح من وجود:
type="file"
و:
<select>
يحاول الماسح أيضًا الحصول على:
form_id
nonce
من HTML النموذج.
يمكن الحصول على إصدار Forminator من أصول HTML مثل:
/wp-content/plugins/forminator/...
باستخدام المعامل:
?ver=X.X.X
لدى الماسح أيضًا خطة بديلة للبحث عن:
Stable tag:
في HTML أو في readme.txt.
يمكن أن تكون الطريقة المعروضة في المخرجات:
html-source
أو:
readme.txt
حد الإصدار في الكود المصدري:
1.56.1
يتم الفحص بمقارنة الإصدار الذي تم العثور عليه مع VULN_MAX.
يمكن أن تكون النتيجة الداخلية:
VULNERABLE
أو:
PATCHED
إذا كان الإصدار غير معروف ولكن تم استيفاء شروط معينة، يستخدم الكود المصدري الحالة:
INSTALLED (unknown version)
يتبع تنسيق المخرجات الرئيسي للأداة البنية التالية:
[STATUS] URL VERSION (METHOD) [PAGES] [FORM STATUS] [VULNERABILITY STATUS] [UPLOAD STATUS]
مثال:
[FOUND] https://target.com v1.56.0 (html-source) [25 pages] [HAS UPLOAD FORM] [VULNERABLE]
إذا تم اكتشاف نموذج رفع:
[FOUND] https://target.com v1.56.0 (html-source) [25 pages] [HAS UPLOAD FORM] [VULNERABLE]
إذا لم يكن هناك نموذج:
[FOUND] https://target.com v1.56.0 (html-source) [25 pages] [VULNERABLE]
FOUNDتم العثور على Forminator وتم الحصول على المعلومات المهمة بنجاح.
NOT FOUNDلم يتم العثور على Forminator.
مثال:
[NOT FOUND] https://target.com [17 pages]
NOT WORDPRESSلم يتم اكتشاف الهدف كموقع ووردبريس.
مثال:
[NOT WORDPRESS] https://target.com
INSTALLED (unknown version)يبدو أن Forminator مثبت، لكن لم يتم تحديد الإصدار.
VULNERABLEالإصدار الذي تم العثور عليه يساوي أو أقل من:
1.56.1
PATCHEDالإصدار الذي تم العثور عليه أعلى من الحد:
1.56.1
بعد معالجة جميع الأهداف، تعرض الأداة ملخصًا.
مثال:
========== SUMMARY ==========
VULNERABLE : 10
PATCHED : 5
UNKNOWN VERSION : 3
NOT FOUND : 20
NOT WORDPRESS : 2
TOTAL SCANNED : 40
[+] HAVE UPLOAD FORM: 2
يُحسب الملخص من نتائج كل هدف تم جمعه بنجاح بواسطة الماسح.
تنشئ الأداة تلقائيًا:
scan_results_detailed.txt
يتم إنشاء هذا الملف بعد اكتمال عملية الفحص.
بنيته:
=== VULNERABLE (with upload form) ===
=== VULNERABLE (no upload form) ===
=== UNKNOWN VERSION (assume vulnerable) ===
مثال:
=== VULNERABLE (with upload form) ===
https://target.example - v1.56.0 (html-source) - form_data: ...
=== VULNERABLE (no upload form) ===
https://target.example - v1.55.0 (html-source)
=== UNKNOWN VERSION (assume vulnerable) ===
https://target.example
يُنصح بعدم رفع ملف نتائج الفحص إلى المستودع إذا كان يحتوي على أهداف أو معلومات حساسة.
cve-2026-15748/
│
├── cve-2026-15748.py
├── README.md
├── targets.txt
└── scan_results_detailed.txt
cve-2026-15748.pyالسكربت الرئيسي.
README.mdتوثيق المشروع.
targets.txtقائمة الأهداف التي ستتم معالجتها.
scan_results_detailed.txtملف نتائج الفحص الذي يتم إنشاؤه تلقائيًا.
يتكون الكود المصدري من عدة أجزاء رئيسية:
cve-2026-15748.py
│
├── CONFIG
│ ├── TIMEOUT
│ ├── THREADS
│ ├── VULN_MAX
│ ├── MAX_RETRIES
│ ├── DELAY_MIN
│ ├── DELAY_MAX
│ └── CRAWL_DEPTH
│
├── HTTP / REQUEST
│ ├── get_headers()
│ └── safe_get()
│
├── URL
│ └── normalize()
│
├── VERSION
│ ├── is_vulnerable()
│ └── extract_version_from_html()
│
├── WORDPRESS
│ └── check_wordpress()
│
├── CRAWLING
│ └── get_all_pages()
│
├── FORM DETECTION
│ └── extract_form_data_advanced()
│
├── FORMINATOR
│ └── check_forminator_full()
│
├── TESTING
│ └── upload_test()
│
├── SCANNING
│ └── scan_target()
│
└── MAIN
└── main()
هذه الدوال تتوافق مع البنية الفعلية للكود المصدري.
يستخدم الماسح:
وكلاء المستخدم المستخدمون يغطون عدة متصفحات شائعة.
تستخدم طلبات GET إعدادات إعادة المحاولة والتأخير:
TIMEOUT = 15 seconds
MAX_RETRIES = 3
DELAY = 1.0–2.5 seconds
لدى الماسح عدة قيود:
UNKNOWN تتطلب فحصًا يدويًا.يُنصح مسؤولو ووردبريس بـ:
قبل تشغيل الماسح على أي نظام:
✓ Pastikan sistem berada dalam scope
✓ Pastikan kamu memiliki izin
✓ Gunakan environment testing jika memungkinkan
✓ Hindari data pengguna nyata
✓ Jangan melakukan pengujian di luar scope
✓ Simpan hasil assessment dengan aman
للاستخدام التعليمي والاختبار المصرح به فقط.
صُنعت هذه الأداة للأغراض التالية:
لا تستخدم هذه الأداة ضد الأنظمة التي لا تملكها أو التي لم تمنح إذنًا بالاختبار.
يتحمل المستخدم المسؤولية الكاملة عن استخدام هذه الأداة.
لا يتحمل المؤلف المسؤولية عن الأضرار أو فقدان البيانات أو انقطاع الخدمة أو العواقب القانونية الناتجة عن إساءة استخدام الأداة.
Yora
GitHub:
المستودع:
https://github.com/yora1928/cve-2026-15748
إذا كان هذا المشروع مفيدًا للتعلم أو للبحث الأمني المشروع، يمكنك إعطاء ⭐ للمستودع.
MIT License
صُنع بكل ❤️ بواسطة Yora
| المتغير | الافتراضي | الوظيفة |
|---|
TIMEOUT | 15 | مهلة طلب HTTP |
THREADS | 8 | عدد العمال/الخيوط |
VULN_MAX | 1.56.1 | حد الإصدار الذي يُعتبر متأثرًا |
MAX_RETRIES | 3 | عدد مرات إعادة محاولة الطلب |
DELAY_MIN | 1.0 | الحد الأدنى للتأخير |
DELAY_MAX | 2.5 | الحد الأقصى للتأخير |
CRAWL_DEPTH | 2 | عمق الزحف |