
ماسح ومستغل PoC بلغة Python للثغرة CVE-2026-84434، وهي رفع ملفات عشوائي بدون مصادقة في Gravity Forms <=3.1.0.4 عبر حقول رفع الملفات المخفية. يدعم أوضاع الفحص والاستغلال والمسح الجماعي.
ماسح ومستغل PoC بلغة Python 3 لـ CVE-2026-84434 في Gravity Forms.
| الإضافة | gravityforms |
| المتأثرة | ≤ 3.1.0.4 |
| تم الإصلاح في | 3.1.0.5+ (إصدار أمان المورّد 3.1.1) |
| CVSS | 9.8 (حرج) |
| المصادقة | بدون مصادقة |
| CWE | CWE-434 — رفع غير مقيّد |
| الفضل | 0xd4rk5id3 — EnvoraSec (Wordfence) |
تتجاوز حقول رفع الملفات المخفية التحقق من الامتداد في خط أنابيب التحقق، بينما قد يستدعي مسار الحفظ upload_file() دون فحوصات مكافئة. يمكن لمهاجم غير مُصادَق إرسال طلب POST إلى نموذج عام يتضمن حقل رفع ملفات مع الظهور → مخفي.
تُخزَّن الملفات تحت wp-content/uploads/gravity_forms/. عادةً ما تضيف Gravity Forms قواعد .htaccess لمنع تنفيذ PHP؛ يعتمد تنفيذ التعليمات البرمجية عن بُعد (RCE) على إعدادات الخادم (nginx، docroot بديل، إلخ).
gform_wrapper وحقل fileupload مخفي (input_{form}_{field})gform_submit، is_submit_{id}، الملف على الحقل المخفي)pip install -r requirements.txtpip install -r requirements.txt
# Check single target
python poc.py -u https://target.example --mode check
# Mass check
python poc.py --list targets.example.txt --mode check --threads 30 --quiet
# Exploit (built-in benign .txt probe unless --payload-file is set)
python poc.py -u https://target.example --mode exploit \
--form-id 3 --page-url /contact/ --file-field 7
# Custom upload file (your own probe — not included in this repo)
python poc.py -u https://target.example --mode exploit \
--form-id 3 --page-url /contact/ --file-field 7 \
--payload-file probe.txt
# Mass exploit from check output
python poc.py --list candidates.jsonl --mode exploit --threads 10 --quiet
| الخيار | الوصف |
|---|---|
-u, --url | عنوان URL الأساسي لهدف واحد |
--list | قائمة عناوين URL، أو CSV بنمط FOFA، أو candidates.jsonl |
--mode | check (افتراضي) أو exploit |
--form-id | معرّف نموذج Gravity Form |
--page-url | مسار أو عنوان URL للصفحة التي تستضيف النموذج |
--file-field | معرّف حقل رفع الملفات المخفي |
--payload-file | الملف المحلي المراد رفعه (افتراضي: علامة .txt غير ضارة في الذاكرة) |
--paths | مسارات إضافية للزحف بحثًا عن النماذج |
--threads, -j | التزامن الجماعي (افتراضي 20) |
--output | نتائج JSONL (افتراضي cve_2026_84434_results.jsonl) |
--vuln-list | عناوين URL المصابة أو نجاحات الاستغلال (افتراضي hits.txt) |
--candidates-list | بيانات وصفية للفحص (افتراضي candidates.jsonl) |
--quiet | تقليل مخرجات التقدم في التشغيلات الجماعية |
| الملف | المحتوى |
|---|---|
cve_2026_84434_results.jsonl | JSON كامل لكل هدف |
hits.txt | عناوين URL الأساسية المرشحة |
candidates.jsonl | form_id، page_url، file_field / input_name |
status الشائعة (check)| الحالة | المعنى |
|---|---|
candidate | إصدار مصاب + رفع ملفات مخفي على نموذج عام |
forms_no_hidden_upload | تم العثور على نماذج، لكن لا يوجد أي منها برفع ملفات مخفي في HTML |
plugin_no_public_forms | الإضافة موجودة، لم يتم اكتشاف نموذج عام |
patched | الإصدار > 3.1.0.4 |
no_plugin | لم يتم اكتشاف Gravity Forms |
.
├── poc.py
├── requirements.txt
├── targets.example.txt
├── README.md
├── LICENSE
└── .gitignore
قوائم الفحص المحلية والمخرجات (list.txt، *.jsonl، الحمولات المخصصة) موجودة في .gitignore ولا ينبغي إيداعها.
لـ اختبارات الأمان المصرّح بها فقط. أنت مسؤول عن الامتثال للقوانين المعمول بها وقواعد البرنامج.