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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-14871 — ثغرة BOLA/IDOR في osTicket ajax.tickets.php | الإفصاح المسؤول | Kitploit
أدوات/GitHubGitHub/jfoz1010/cve-2026-14871
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبجمع المعلوماتاختبار الاختراقالتعلم والتعليم
GitHubjfoz1010/cve-2026-14871

CVE-2026-14871

ثغرة BOLA/IDOR في osTicket ajax.tickets.php | الإفصاح المسؤول

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2026-14871 - BOLA / IDOR في osTicket ajax.tickets.php

انتهاك تفويض المستوى الكائن (BOLA): مرجع غير مباشر غير آمن للكائن (IDOR)
include/ajax.tickets.php ← دالة viewField()
تم الإبلاغ بواسطة @JF0x0r · 27 مارس 2026
الحالة: تم الإصلاح - تم إصدار التصحيح في osTicket v1.17.8 / v1.18.4


نظرة سريعة

الحقلالتفاصيل
الثغرةBOLA / IDOR (انتهاك تفويض المستوى الكائن)
الهدفosTicket v1.18-git - commit 2570d69
المكونinclude/ajax.tickets.php
الدالةviewField() - الأسطر 805–806
نقطة النهايةGET /scp/ajax.php/tickets/{ticket_id}/field/{field_id}/view
درجة CVSS 4.08.2 عالية - AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N
CWECWE-862 (فقدان التفويض)، CWE-639 (تجاوز التفويض عبر مفتاح يتحكم به المستخدم)
الحالة✅ تم الإصلاح — تم التصحيح في osTicket v1.17.8 و v1.18.4

من أنا

أنا خوان فيليبي أوز (@JF0x0r)، باحث أمني شغوف بأمان المصادر المفتوحة. لا أفعل هذا من أجل المكافآت، بل أفعله لأنني أعتقد أن الأدوات التي يعتمد عليها الناس يجب أن تكون آمنة. عندما أجد شيئًا، أبلغ عنه بمسؤولية، وأوثقه بشكل صحيح، ثم أشاركه علنًا بمجرد إصلاحه.


ما وجدته

أثناء إجراء مراجعة يدوية للكود للنظام الفرعي AJAX في osTicket، لاحظت شيئًا غير طبيعي في ajax.tickets.php. تتعامل دالة viewField() مع الطلبات لعرض بيانات حقول التذاكر - وهي تسترد كائن التذكرة وتتحقق من وجود الحقل. لكنها لا تتحقق أبدًا مما إذا كان الوكيل الطالب لديه الإذن بالوصول إلى تلك التذكرة.

لا يوجد checkStaffPerm(). لا يوجد التحقق من القسم. لا شيء.

هذا يعني أن أي وكيل موثّق، حتى لو كان مقيدًا بشكل صارم بقسم واحد، يمكنه قراءة حقول التذاكر من أي قسم آخر في النظام، فقط من خلال معرفة أو تخمين ticket_id و field_id. هذه أعداد صحيحة متسلسلة. من السهل تعدادها.

ما يجعل هذا واضحًا بشكل خاص هو المقارنة مع editField()، الدالة الشقيقة التي توجد فوقها مباشرة في نفس الملف. تقوم editField() بشكل صحيح باستدعاء $ticket->checkStaffPerm($thisstaff, Ticket::PERM_EDIT) وتعيد HTTP 403 عند المخالفة. كان التصحيح مطبقًا بالفعل على عمليات الكتابة — ولكن لم يتم تطبيقه أبدًا على عمليات القراءة.


إثبات المفهوم: عرض حي

سجلت عرضًا توضيحيًا كاملاً للاستغلال من البداية إلى النهاية في بيئة مختبرية خاضعة للتحكم:

فيديو إثبات المفهوم — BOLA/IDOR osTicket

يسير الفيديو من خلال:

  • إعداد المختبر مع قسمين معزولين (Dept-A و Dept-B)
  • الوكيل agent_a الموثّق مع وصول مقصور على Dept-A فقط
  • صياغة الطلب غير المصرح به الذي يستهدف تذكرة سرية في Dept-B
  • الخادم يعيد HTTP 200 مع كشف بيانات حقل التذكرة المحظورة
  • إعادة التشغيل بعد التصحيح تظهر HTTP 403 — تم رفض الإذن

يقوم سكربت exploit.py في هذا المستودع بأتمتة السلسلة الكاملة (المصادقة ← التعداد ← الوصول غير المصرح به إلى الحقل) وتم استخدامه أثناء التقييم لتأكيد أن المشكلة تتجاوز الاختبارات اليدوية.


التأثير

  • كشف البيانات الحساسة - يمكن لأي وكيل قراءة حقول التذاكر السرية عبر جميع الأقسام
  • تصعيد امتياز أفقي - يتم تجاوز الحدود بين الأقسام تمامًا
  • التعداد الجماعي - الأعداد الصحيحة المتسلسلة ticket_id / field_id تجعل الكشط الجماعي تافهًا
  • انتهاك سرية متعدد المستأجرين - يتعارض مع مبدأ التصميم الأساسي لنموذج عزل الأقسام في osTicket

الإصلاح

إدراج سطر واحد في viewField()، مباشرة بعد استرداد كائن التذكرة - يعكس تمامًا ما تفعله editField() بالفعل بشكل صحيح. التفاصيل التقنية الكاملة، والفرق، وتفصيل CVSS موجودة في التقرير المرفق.

📄 BOLA_IDOR_osTicket_Report_v2.pdf

✅ التصحيح الرسمي (تم التأكيد من قبل فريق osTicket)

أكد osTicket التقرير وقام بتنفيذ التخفيف عن طريق إضافة $ticket->checkStaffPerm($thisstaff) قبل حل/عرض الحقل المطلوب - مما يعكس التحقق الموجود بالفعل في editField(). يجب أن يكون للموظفين الآن وصول إلى التذكرة الأصلية قبل عرض بيانات الحقل.

يوصي osTicket بفترة ترقية قصيرة قبل مشاركة خطوات الاستغلال الكاملة علنًا. يتبع هذا المستودع هذه التوجيهات - انظر الجدول الزمني للإفصاح أدناه.


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


الملفات في هذا المستودع

root@kitploit:~
.
├── README.md                        # هذا الملف
├── BOLA_IDOR_osTicket_Report_v2.pdf # تقرير الإفصاح التقني الكامل
├── exploit.py                       # سكربت أتمتة إثبات المفهوم
└── PoC_osTicket.mov                 # نسخة محلية من فيديو العرض التوضيحي

الإفصاح المسؤول

أبلغت عن هذا بشكل خاص إلى فريق أمان osTicket قبل نشر أي شيء. تم جعل هذا المستودع عامًا فقط بعد انتهاء فترة الإفصاح المسؤول، والآن بعد أن تم إصدار التصحيح الرسمي، تتوفر الكتابة الكاملة. إذا كنت أحد القائمين على osTicket ولديك أسئلة، فلا تتردد في التواصل مباشرة عبر GitHub.


تم العثور عليه بواسطة @JF0x0r · أمان المصادر المفتوحة مهم.

تنزيل الأداة
التفاصيلالمرجع
commit التصحيحd590a9770d25159fb7741681f36e23a35f1fb5e9
تم الإصلاح فيv1.17.8 · v1.18.4
التنزيلات الرسميةosticket.com/download
نوع الإصدارإصدار أمني معجل
شكر وتقديرخوان فيليبي أوز (@JF0x0r)
التاريخالحدث
27 مارس 2026تم اكتشاف الثغرة وتوثيقها
27 مارس 2026تم إرسال التقرير إلى [email protected]
17 يونيو 2026أكد osTicket المشكلة وشارك تصحيح التخفيف للتحقق
17 يونيو 2026أصدر osTicket v1.17.8 و v1.18.4 يحتويان على الإصلاح (commit d590a9770d25159fb7741681f36e23a35f1fb5e9)
—تعيين CVE معلق عبر GitHub CNA