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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-16540-SimplyScheduleAppointments — CVE-2026-16540 — Simply Schedule Appointments < 1.6.12.6 كشف بيانات المواعيد والحذف الجماعي دون مصادقة | Kitploit
أدوات/GitHubGitHub/huseyn0vs/cve-2026-16540-simplyscheduleappointments
تحليل الثغرات الأمنيةاستغلال تطبيقات الويبتسريب البياناتجمع المعلوماتاختبار الاختراقسوء التكوين
GitHubhuseyn0vs/cve-2026-16540-simplyscheduleappointments

CVE-2026-16540-SimplyScheduleAppointments

CVE-2026-16540 — Simply Schedule Appointments < 1.6.12.6 كشف بيانات المواعيد والحذف الجماعي دون مصادقة

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة
عرض المستودع
1منذ 29 أياملم تتم المراجعة بعد

CVE-2026-16540 — Simply Schedule Appointments < 1.6.12.6

الكشف غير المصادق عليه لبيانات المواعيد والحذف الجماعي عبر نقطة النهاية purge

الحقلالتفاصيل
CVECVE-2026-16540
البرنامج المساعدSimply Schedule Appointments
الإصدارات المتأثرة< 1.6.12.6
تم الإصلاح في1.6.12.6
عمليات التثبيت النشطة~70,000
CVSS 3.16.5 (متوسط) — CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N
CWECWE-863 (تفويض غير صحيح)
OWASPA5: التحكم في الوصول المعطوب
WPVDBc3829294-c388-4151-9e25-a3eac7b1f1c6
الباحثSuleyman Huseynov (@huseyn0vs__)
تاريخ الإفصاح2026-07-22

الملخص

نقطة نهاية REST GET /wp-json/ssa/v1/appointments/purge في Simply Schedule Appointments تطبّق فحص تفويض (get_items_permissions_check) يتحقق من id_token الذي يثبت ملكية موعد واحد فقط. ومع ذلك، يتجاهل المعالج (purge_appointments()) تمامًا الموعد الذي ينتمي إليه الرمز ويعمل بدلاً من ذلك على جميع المواعيد على مستوى الموقع التي تطابق الشروط المقدَّمة.

يستطيع المهاجم غير المصادق عليه الذي يحجز أي موعد واحد عبر نموذج الحجز العام الحصول على id_token. وباستخدام هذا الرمز، يمكن للمهاجم:

  1. استرجاع البيانات الشخصية لجميع المواعيد عبر الموقع (الأسماء، رسائل البريد الإلكتروني، أرقام الهواتف، تفاصيل المواعيد)
  2. حذف جميع المواعيد الماضية أو الملغاة أو المستقبلية نهائيًا (الإصدارات المدفوعة فقط للحذف)

يمتد الحذف عبر 6 جداول قاعدة بيانات مرتبطة في معاملات ملتزمة، دون أي وظيفة تراجع أصلية.


تحليل السبب الجذري

الملف: includes/class-appointment-model.php

تفويض مورد خاطئ (CWE-863)

بوابة الصلاحيات والمعالج يعملان على نطاقات مختلفة تمامًا:

root@kitploit:~
// Route registration
register_rest_route( $namespace, '/' . $base . '/purge', array(
    array(
        'methods'             => WP_REST_Server::READABLE,
        'callback'            => array( $this, 'purge_appointments' ),
        'permission_callback' => array( $this, 'get_items_permissions_check' ),
    ),
) );

فحص الصلاحية — يتحقق من ملكية موعد واحد عبر id_token:

root@kitploit:~
public function get_items_permissions_check( $request ) {
    // ...
    if ( true === $this->id_token_permissions_check( $request ) ) {
        return true;  // grants access if caller proves ownership of one appointment
    }
    // ...
}

المعالج — يتجاهل موعد الرمز ويعمل على مستوى الموقع:

root@kitploit:~
public function purge_appointments( WP_REST_Request $request ) {
    $params = $request->get_params();

    // No customer_id or appointment_id scoping — deletes ALL matching appointments
    if ( isset( $params['purge_past_appointments'] ) && 'true' === $params['purge_past_appointments'] ) {
        $conditions[] = $wpdb->prepare( 'end_date < %s', $date_modified_max->format( 'Y-m-d' ) );
    }

    $sql = 'SELECT * FROM ' . $this->get_table_name()
         . ' WHERE ' . implode( ' OR ', $conditions )
         . ' ORDER BY id ASC LIMIT 5000';

    $list = $wpdb->get_results( $sql, ARRAY_A );
    // Cascade-deletes across 6 tables in committed transactions
}

id_token هو HMAC-MD5 مشتق من id و date_created لموعد واحد. امتلاك هذا الرمز يثبت فقط أن المتصل حجز موعدًا واحدًا محددًا — ولا يمنح أي صلاحية على مستوى الموقع على الإطلاق.


سلسلة الهجوم

root@kitploit:~
1. Attacker visits the booking page and books any free appointment
   → receives confirmation email containing: appointment_id + id_token

2. GET /wp-json/ssa/v1/appointments/purge
     ?id=<appointment_id>
     &token=<id_token>
     &purge_past_appointments=true

3. Permission check passes (valid token for attacker's own appointment)

4. Handler selects ALL past appointments site-wide → returns PII in response
   → permanently deletes them across 6 tables (on premium editions)

إثبات المفهوم

سيتم نشر إثبات المفهوم في 2026-08-05 بعد انتهاء فترة حظر الإفصاح المنسق.

انظر دليل poc/ بعد تاريخ انتهاء الحظر.


التأثير

السيناريوالنتيجة
كشف البياناتأسماء، رسائل بريد إلكتروني، أرقام هواتف، وتفاصيل مواعيد جميع العملاء
الحذف الجماعي (المدفوع)تدمير جميع المواعيد التاريخية/المستقبلية نهائيًا عبر 6 جداول
لا يوجد مسار استرداديتطلب استعادة كاملة من نسخة احتياطية لقاعدة البيانات

الجدول الزمني للإفصاح

التاريخالحدث
2026-07-10اكتشاف الثغرة
2026-07-10إرسالها إلى WPScan
2026-07-22تعيين CVE-2026-16540

المراجع

  • استشارة WPScan
  • صفحة البرنامج المساعد على WordPress
  • CWE-863: Incorrect Authorization
  • OWASP A5: Broken Access Control
تنزيل الأداة
2026-07-22
إفصاح عام على WPScan
2026-08-05نشر إثبات المفهوم